fixedpoint.jp


2020-02-14

TensorFlowやPyTorchのtensorはtensorではない

一世を風靡しているdeep learningフレームワークのTensorFlowPyTorchにおいてtensorと呼ばれているデータ構造は、それぞれのドキュメンテーション[1][2]に書かれているように、実際は単なる多次元配列(multidimensional array)に過ぎません。

数学におけるtensorに求められる多重線形性やtensor productには直接関係ないというのが実情です。多次元配列と呼ぶのがマーケティング的にいまいちというのなら、例えばholorと呼ぶ方が実態に合っていると考えられます。

参考

[1] https://www.tensorflow.org/guide/tensor

[2] https://pytorch.org/docs/stable/tensors.html

#permalink

2020-02-09

サイコロで相手と同じ目を出す賭けに乗るべきか

見知らぬ人が1つ6面体サイコロを持って来て、次のように持ち掛けてきたとします: 「これをお互いに1回ずつ振って、同じ目が出たらあなたに$6差し上げます。この賭けに乗るならまず$1払ってください。」さて、この賭けに乗るべきでしょうか?

もしサイコロが公正なら、相手が出した目が何であれあなたが同じ目を出す確率は1/6であることはすぐ分かるので、得られる額の期待値は$6 * (1/6) = $1となり、乗っても損も得もなさそうです。

問題はこのサイコロが公正でない場合ですが、実はその方があなたにとって有利です。(ただし、サイコロの各目の出る確率は、相手が振るときとあなたが振るときとで変わらないものとします。)

このことは次の定理から分かります: 任意の正の整数\(n\)について、\(n\)個の実数\(p_1, p_2, ..., p_n\)が\(\sum_{i=1}^{n} p_i = 1\)を満たすとき\[\sum_{i=1}^n p_i^2 \geq \frac{1}{n}.\]

証明は以下のとおりです:\begin{align}\sum_{i=1}^n (p_i - \frac{1}{n})^2 &= \sum_{i=1}^n (p_i^2 - \frac{2}{n} p_i + \frac{1}{n^2}) \\ &= \sum_{i=1}^n p_i^2 - \frac{2}{n} \sum_{i=1}^n p_i + \frac{1}{n} \\ &= \sum_{i=1}^n p_i^2 - \frac{2}{n} + \frac{1}{n} \\ &= \sum_{i=1}^n p_i^2 - \frac{1}{n}\end{align}上の等式の最初の式は常に0以上であるため、示したいことが言えます。

問題の賭け(\(n = 6\)の場合)に戻ると、公正でないサイコロでも相手の出す目とあなたの出す目が同じである確率は常に\(1/6\)以上あり、得られる額の期待値も常に$1以上になるということです。

#permalink

2020-02-03

X染色体の遺伝とフィボナッチ数列

自然界に見られる現象に隠れている数理の例として、フィボナッチ数列がよく取り上げられます。フィボナッチ数列\(F_n\)は以下のように定義されます:\[\begin{cases}F_0 = 0; \\F_1 = 1; \\F_{n+2} = F_n + F_{n+1}. \\\end{cases}\]今回は、ヒトにおけるX染色体の遺伝パターンにフィボナッチ数列が現れる[1]ことを示します。

ここでいうXおよびY染色体の遺伝のモデルは、男性の場合はXY型を持ち、女性の場合はXX型を持つという単純なものです。

ある男性の\(n\)世代前の祖先のうち、遺伝に自分のX染色体をその男性に引き継ぐ可能性がある人の数を\(A_n\)とします。具体的には、0世代前は本人、1世代前は彼の両親、2世代前は彼の祖父母、...となります。このため、\(A_0 = 1\)、男性は母からのみX染色体を受け継ぐので\(A_1 = 1\)、4人の祖父母のうち母方の祖父母それぞれのX染色体を受け継ぐので\(A_2 = 2\)、...のようになります。(\(n\)世代前の祖先の数はちょうど\(2^n\)なので、当然\(A_n \leq 2^n\)です。)実は、\[A_n = F_{n+1} \qquad (n \geq 0)\]が成り立ちます。

これを証明するには、もう1つ別に次のような数列を考えると簡単です。ある女性の\(n\)世代前の祖先のうち、遺伝によって自分のX染色体をその女性に引き継ぐ可能性がある人の数を\(B_n\)とします。例えば、\(B_0 = 1\)、女性は両親からX染色体を受け継ぐので\(B_1 = 2\)、4人の祖父母のうち父方の祖父由来のX染色体だけは受け継ぐ可能性がないので\(B_2 = 3\)、...のようになります。一般に、男性は母親からのみX染色体を受け継ぐということから次が成り立ちます。\[A_{n+1} = B_n \qquad (n \geq 0).\]また、女性はその両親からX染色体を受け継ぐことから次が成り立ちます。\[B_{n+1} = A_n + B_n \qquad (n \geq 0).\]上の2式から、\(A_{n+2} - A_{n+1} = B_{n+1} - B_n = A_n\)が導かれます。したがって\[\begin{cases}A_0 = 1; \\A_1 = 1; \\A_{n+2} = A_n + A_{n+1} \\\end{cases}\]となり、示したかったことが言えます。同時に\(B_n = F_{n+2}\)も分かります。

参考

[1] Hutchison et al. "Growing the Family Tree: The Power of DNA in Reconstructing Family Relationships." Proceedings of the First Symposium on Bioinformatics and Biotechnology (BIOT-04), pp. 42-49. (2004)

#permalink

Archives

2020: Jan

2019: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2018: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2017: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2016: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2015: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2014: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2013: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2012: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2011: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2010: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2009: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2008: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2007: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

2006: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec


© 2006-2020 fixedpoint.jp