Uncategorized」カテゴリーアーカイブ

2024年9月 阪大集中講義「渡辺澄夫ベイズ理論」盛況のうちに幕

2024年9月8日(日)から13日(金)にかけて、鈴木が6コマ、それ以外の9コマを9名の講師の先生にお話しいただきました。

Andrew Gelman先生 (Columbia University)・Mathias Drton (Technical University of Munich)、伊庭幸人先生(統計数理研究所)、車谷優樹先生(りそな銀行)、徳田悟先生(九州大学)、渡辺澄夫先生(理研)、 二宮嘉行先生(統計数理研究所)、矢野恵佑先生(統計数理研究所)、青柳美輝先生(日本大学)

下記は、鈴木が入門向けに行いました最初の6コマの中の重要箇所の切り抜きです。

RKHSでは2乗平均連続過程とランダム要素の区別がない(「機械学習のためのカーネル」命題70(4) )

証明だけ書いておきます。

$f:\Omega\times E\rightarrow {\mathbb R}$が$RKHS(k)$のランダム要素であれば、$\Omega\ni\omega\mapsto f(\omega,\cdot)\in RKHS(k)$が可測です。内積は連続な写像であり、再生性から各$x\in E$で$\langle f(\omega,\cdot),k(\cdot,x)\rangle=f(\omega,x)$が成立するので、各$x\in E$で$\Omega\ni\omega\mapsto f(\omega,x)\in {\mathbb R}$が可測であり、確率変数になります。

逆に、$f$が$RKHS(k)$に値をとる確率変数、つまり各$\omega\in \Omega$で$f(\omega,\cdot)\in RKHS(k)$であって$\Omega\ni\omega\mapsto f(\omega,x)$が各$x\in E$で可測であることを仮定しましょう。各$g\in RKHS(k)$に対して、$\|g_n-g\|\rightarrow 0$となるような$g_n(\cdot):=\sum_{i=1}^na_ik(\cdot,x_i) $を構成できます。再生性から、$\langle f(\omega,\cdot),g_n\rangle=\sum_{i=1}^na_if(\omega,x_i)$とでき、各$n$で可測です。そして、内積の連続性から$\langle f(\omega,\cdot),g\rangle$はその極限であり、可測であることがわかります。$g\in RKHS(k)は任意でしたので、命題70(1)の議論から、$\Omega\ni \omega\mapsto f(\omega,\cdot)\in RKHS(k)$は可測になります。

平均0の平均2乗連続過程に対応するランダム要素(「機械学習のためのカーネル」命題70(3))

平均2乗連続過程$f: \Omega \times E\rightarrow {\mathbb R}$の共分散関数が$k$であれば、共分散作用素が$H\ni g\mapsto \int_Ek(\cdot,y)g(y)d\mu(y)$となるランダム作用素が存在する

テキストと同様の方法で、$\{(E_i,x_i)\}_{1\leq i\leq M(n)}$を決めます。そして$$F(\omega,x; \{(E_i,x_i)\}_{1\leq i\leq M(n)})=\sum_{i=1}^{m(n)}I_{E_i}(x)f(\omega,x_i)$$とおき、$n$を$n'(\leq n)$に置き換えたものとの差の2乗平均誤差をとります。平均は確率空間$(\Omega,{\cal F}, P)$と測度空間$(E,B(E),\mu)$の両方に関してです。
\begin{eqnarray*}&&\int_{\Omega}\int_E\left\{F(\omega,x; \{(E_i,x_i)\}_{1\leq i\leq M(n)})-F(\omega,x; \{(E_i’,x_i’)\}_{1\leq i\leq M(n’)})\right\}^2d\mu(x)dP(\omega)\\
&=&\int_{\Omega}\left\{\sum_{i=1}^{m(n)}f(\omega,x_i)\int_{E_i}d\mu(x)-
\sum_{i=1}^{m(n’)}f(\omega,x’_i)\int_{E’_i}d\mu(x)\right\}^2dP(\omega)
\end{eqnarray*}テキストの方法と同様にこの値は0に収束します。すなわち、任意のCauchy列が収束したことになり、完備であることも考えると、\begin{eqnarray*}\int_{\Omega}\int_E\left\{F(\omega,x; \{(E_i,x_i)\}_{1\leq i\leq M(n)})-F(\omega,x)\right\}^2d\mu(x)dP(\omega)\rightarrow 0\end{eqnarray*}であって、$\int_\Omega\int_E\{F(\omega,x)\}^2d\mu(x)dP(\omega)<\infty$なる$F$が存在します。そして、$\int_E\{F(\omega,x)\}^2d\mu(x)=\infty$なる事象$A\subseteq \Omega$について、$F(\omega,x)=0$, $\omega\in A$というように$F$を修正すると、任意の$\omega\in \Omega$について、$\int_E\{F(\omega,x)\}^2d\mu(x)<\infty$とできます。したがって、$F(\cdot,\omega)\in H=L^2(E,B(E),\mu)$がすべての$\omega\in \Omega$についていえて、命題70(1)の議論から、そのような$F$は$L^2(E,B(E),\mu)$のランダム要素になります。

そして、$F$の共分散作用素${\mathbb E}[F\otimes F]$は、各$h_1,h_2\in L^2(E,B(E),\mu)$を適用すると、$\langle {\mathbb E}[F\otimes F]h_1,h_2\rangle={\mathbb E}(\langle F,h_1\rangle \langle F,h_2\rangle)$となり、それは\begin{eqnarray*}&&\int_{\Omega}\sum_{i=1}^{m(n)}f(\omega,x_i)\int_{E_i}h_1(x)d\mu(x)
\sum_{j=1}^{m(n)}f(\omega,x_j)\int_{E_i}h_2(y)d\mu(y)dP(\omega)\\&=&\sum_{i=1}^{m(n)}\sum_{j=1}^{m(n)}k(x_i,x_j)\int_{E_i}h_1(x)d\mu(x)\int_{E_i}h_2(y)d\mu(y)\end{eqnarray*}の$n\rightarrow \infty$の極限であって、作用素$L^2(E,B(E),\mu)\ni h\mapsto \int_E k(\cdot,y)h(y)d\mu(y)$を適用することと同じになります。

$E$をコンパクト集合として、確率過程$f: \Omega\times E\rightarrow {\mathbb R}$が各$\omega\in \Omega$で連続なら、$\Omega\ni \omega \mapsto f(\omega,\cdot)$はランダム要素(「機械学習のためのカーネル」命題70(2))

$E$をコンパクト集合、$(\Omega,{\cal F},P)$を確率空間とします。$f: \Omega\times E\rightarrow {\mathbb R}$が各$x\in E$で可測のとき(確率変数のとき)、$f$を確率過程と呼びます。同様に、$H$をHilbert空間として、$F:\Omega\rightarrow {H}$が可測のとき、$F$はランダム要素と呼びます。この可測性は、$H$のノルムで距離を定義して開集合を定義し、各開集合の逆像が事象になっていることをさします。

この証明のために、まず$(E,B(E),\mu)$を測度空間とし、$g(\omega,x):=\sum_{i=1}^kI_{E_i}(x)h_i(\omega)$, $\omega\in \Omega$という形式の関数を用意します。ただし、$E_1,\ldots,E_k\in B(E)$は重なりがなく、それらの和集合が$E$となるものとします。また、$I_{E_i}(x)$は$x\in E$が$x\in E_i$であれば1、そうでなければ0であるとします。さらに、$f_i: \Omega\rightarrow {\mathbb R}$は可測であるとします。このとき、${\mathbb R}$の任意のBorel集合$B$について、$$g^{-1}(B)=\cup_{i=1}^k (E_i\times h_i^{-1}(B))$$とでき、これは積の$\sigma$集合体${\cal F }\times B(E)$の中にあります。つまり、$g$は$\Omega\times E$に関して可測になります。テキストでも設定したように、$\{(E_i,x_i)\}_{1\leq i\leq m(n)}$を設定し、
$$f_n(\omega,x):=\sum_{i=1}^{m(n)}I_{E_i}(x)f(\omega,x_i)$$とおくと、$\omega\in \Omega$を固定したときに$f(\omega,\cdot)$の一様連続性から、$f_n(\omega,x)\rightarrow f(\omega,x)$が$x\in E$に関して一様に収束します。したがって、$f$も$\Omega\times E$に関して可測である(可測関数列の一様極限は可測関数)。命題70(1)と同様の議論から、$\Omega\ni \omega\mapsto f(\omega,\cdot)$はランダム要素になります。

「統計的機械学習の数理」がYoutube(ぜうチャンネル)に

2024年3月から着手した「統計的機械学習の数理」のYoutubeが見れるようになりました。

辛口データサイエンス(ぜうチャンネル)

これまでは、講義の録画がメインで、またvimeoのアカウントに入れていました。2024年3月からはYoutubeのチャネルを「辛口データサイエンス(ぜうチャネル)」という名前に変更しました。そして、講義の録画だけでなく、オフィスで録画した動画も公開するようにしました。

「統計的機械学習の数理」の動画は、各節事に分かれていて、毎回5-25分程度の分量です。温泉や海外旅行のときの写真をカバーにおいていますが、内容とは関係ありません。カバーがクリック率に影響するように思いました。

現在は、大学院の講義の「機械学習のためのカーネル」も並行して、順次公開しています(2024年8月に完成の予定)。

よろしければ、チャネル登録と、いいねをお願いします。

Cholesky分解を求める計算量 (機械学習のためのカーネル6.1節)

正定値対称行列$A\in {\mathbb R}^{n\times n}$に対して、$A=RR^\top$なる下三角行列$R\in {\mathbb R}^{n\times n}$が存在します(この証明は省略します)。成分で書くと
$$ A_{ji}=\sum_{h=1}^nR_{jh}R_{ih},\hspace{5mm}i,j=1,\ldots,n$$ が成立します。最初に$R_{ij}$, $i,j=1,\ldots,n$ をすべて0にしてから、各$i=1,\ldots,n$で
1. $R_{ii}=\sqrt{A_{ii}-\sum_{h=1}^{i-1}R_{ih}^2}$
2. $R_{ji}=(A_{ji}-\sum_{h=1}^{i-1}R_{jh}R_{ih})/R_{ii}$, $\hspace{3mm}j=i+1,\ldots,n$
によって、$R$の第$i$列が求まります。2.は$(n-i)^2$回の演算(乗算)が必要で、全体で
$$\sum_{i=1}^n(n-i)^2=\sum_{j=0}^{n-1}j^2=\frac{1}{6}(n-1)n(2(n-1)-1)=\frac{n^3}{3}(1-\frac{1}{n})(1-\frac{1}{2n})$$回、高々$n^3/3$の演算が必要です。他方、$A,B\in {\mathbb R}^{n\times n}$の乗算は、その第$i,j$成分が$\sum_{h=1}^n A_{ih}B_{hj}$によって得られ、この操作を$n^2$個の成分すべてに対して行うので、$n^3$回の演算が必要です。$A$の逆行列を求める操作も同様の時間を要します。

計算量のオーダー表現は、定数倍の差異を除いて考えるので、上記すべて$O(n^3)$という表記が本来ですが、機械学習のためのカーネル6.1節では、$O(n^3/3)$, $O(n^3)$というように両者を区別しています。

また、下三角行列$L\in {\mathbb R}^{n\times n}$とある定数ベクトル$b\in {\mathbb R}^{n}$があって、$Lx=b$なる$x$を求めるためには、$$x_i=(b_i-\sum_{h=1}^{i-1}L_{i,j}x_j)/L_{ii}$$を各$i=1,\ldots,n$に対して行う必要があり、高々$1+\ldots+(n-1)=n(n-1)/2$回の乗算が必要です。テキストではこれを$O(n^2)$の時間がかかるとしています。

YouTubeをはじめました。「ぜうちゃねる」にご登録を。いいねも歓迎です。

テキストにそった内容のYouTube動画を作成しています。パワーポイントでスライドを作成し、Goodnoteを用いて書きながら丁寧に説明しています。各節につき1動画になっています。2024年3月の段階ではまだ第1章のみですが、2024年4月中には、統計的機械学習の数理のすべての動画が完成することになっています。ゆっくり話しているので、上級者の方は速度を125%や150%にして見ていただければと思います。

100問の解答を掲載しました。

「解答がほしい」というご要望があることは承知していました。ただ、勤務している学生(学部3年後期)が提出する演習問題にもなっていたこととがネックになっていました。解答がなくても本文を読めばわかる問題ばかりだという意識がありました。

今回、下記に関して、数学とプログラミングに関して、略解と言いながらも詳しい解答を載せてみました。ご活用ください。

2024年中には、シリーズの既刊すべてについて、解答を作成する予定です。ご期待ください。

受賞の言葉(日本行動計量学会会報2023年12月号から抜粋)

このたびは,栄えある出版賞(杉山明子賞)をいただき,大変光栄に思います.日頃から、会員の皆様から励ましていただき、助けていただいているお陰だと思い、感謝しています。

受賞の対象となった「統計的機械学習の数理100問 with R」は、2017年に阪大の基礎工数理に異動になってからはじめた講義(3年後期)の内容を書籍にしたものです。3年間教えて、2020年3月に書籍にしました。線形回帰、分類、CV、ブートストラップ、情報量基準、スパース、決定来、サポートベクトルマシン、主成分分析、クラスタリングなどの項目を含みます。

RやPythonを使ったデータ分析や機械学習の書籍は、無数にあります。しかし、「統計的機械学習の数理100問with R」は、私の教育や研究のポリシーを如実に反映した独自性の強いものとなっています。パッケージにデータを入れて出力結果をみるような、いわゆる使い方に関する書籍が多いように思いますが、そういう勉強方法に強い問題意識を持っていました。

私は、ベイジアンネットワーク(BN)の研究を長くやっていて、BNの有償ソフトやbnlearnの出力結果の解釈について、質問を受けることよくあります。しかし、残念なことに、ほとんどの場合、使っている本人が、BNの動作をわかってなく、間違っていました。それだけならまだしも、(間違った利用方法で)都合のよい結果がでたときだけ、「BNを使って〇〇の結果が出ました」というような論文を書く人がかなりいます。一般のデータサイエンスや機械学習でも同じことが言えます。正直、パッケージにデータを放りこむだけなら、小学生でもできると思っています。

ここで、そうした処理の多くは、プログラムだけでなく、数学で記述できます。「統計的機械学習の数理100問with R」は、数学の各段階をソースコードで正確に書いて、動作を確認しています。このようにすると、自然と数学的なロジックもついてきて、データサイエンスに必要な本質を見る姿勢ができてきます。業務でパッケージを用いることは否定しません。しかし、勉強の段階では、ブラックボックスにしないで、動作を確認すべきです。そして、正しい結論を世の中に提供するという本来の使命を果たすべきだと思っています。

「統計的機械学習の数理100問 with R」は、「機械学習の数理100問シリーズ」という共立出版から出している書籍の1つで、「スパース推定100問 with R」「機械学習のためのカーネル 100問 with R」とそれらのPython版、最近では「渡辺澄夫ベイズ理論 with R」など合計で7冊出しています。定年までの2年数ヶ月であと5冊完成させる予定です。以前は、BNの他に情報理論、代数幾何を用いた暗号などを手掛けていましたが、2017年に現在の職についてから、データサイエンスの種々のテーマを希望する学生が多くいることがわかり、それまでのやり方(守備範囲が狭すぎる)ではやっていけないと思い、自分の勉強のためもあってこのシリーズの執筆を始めました。

今回の受賞で、機械学習の数理100問シリーズを始めてよかったと実感しました。また、先日の行動計量シンポジウム「WAIC/WBICの理論と実装:渡辺澄夫ベイズ理論への招待」に多くの方(約170名)にご出席いただいき、むずかしそうに見える理論をわかりやすく伝えるという貢献をしていく必要があると思いました。さらなる努力を続けていきたいと思っています。皆様、今後ともよろしくお願いします。

鈴木 讓 (すずき・じょう)
大阪大学大学院基礎工学研究科教授
早稲田大学理工学部卒.早稲田大学大学院修了、博士(工学)。早稲田大学助手,青山学院大学助手を経て,1994年に大阪大学講師に着任。理学研究科准教授を経て、2017年より現職.この間,Stanford大学(1995-1997),Yale大学(2001-2002)の客員研究員。日本行動計量学会 理事(2018-)、運営委員会委員長(2018-2021)。BehaviormetrikaのCoordinate Editor。

講義の学生がglmnet for Pythonを動かす環境を作成してくれました。

スパース推定のglmnetは、PythonだとCentOSRでないとが動かないので、悩んでいました。講義は、Rの学生とPythonの学生がいるので。dockerで動作する環境を、受講する学生の一人が作成してくれました。windowsでも動きます。

https://github.com/oriki101/sparse_estimation_docker