機械学習ぼっち論文読み

一人ぼっちで論文の読み会をするブログ

ニューラルネットの算数: 第1回

最近,というか数年前からニューラルネットがアツいです.世界史はよく知りませんが,第3次ブームだそうです.きょうびニューラルネットを無視して線形で何かをやろうとすると,すぐ非線形がどうとかディープとの比較がどうとか言われてボコボコにされます.実際影響力はすごくて,ひたすら分散分析を繰り返すニッチな統計家にでもならなければ流れを無視することはもう無理です.

実際のところ自分は学部の時の輪読でMLPを勉強した経験だけでニューラルネット,ひいてはDLがわかった(ことになっている)ニワカで,このままだと間違いなく破滅するので,最近,ニューラルネットに関する算数をお勉強しています.雑にまとめていきつつ皆さんにコメントをいただければと思っております.

なお,以下では,変数のboldたとえば\boldsymbol xはベクトルを,関数のbold\boldsymbol fはベクトルの各要素に関数を適用したベクトル値関数を意味します.

雑な導入ですが,まず,線形モデルというものがあります.何かの入力\boldsymbol x \in \mathbb{R}^pとパラメータ \boldsymbol \theta \in \boldsymbol \Thetaがあったとき,

(線形モデル)  f(\boldsymbol x;\boldsymbol \theta):=\boldsymbol \theta_1 \boldsymbol x + \theta_1' \in \mathbb{R}

となるようなモデルです.実際にはこれは\boldsymbol xに関して線形変換ではなくアフィン変換ですが,入力値を \tilde{\boldsymbol x}:=(\boldsymbol x^{\top},1)^{\top}とかすれば線形になるので気持ちは線形です.納得がいかなければ切片は無視しましょう.

線形モデルは線形回帰とかいろいろな問題に使われますし,理論も簡単なので理論屋の話に頻出しますが,モデルの表現能力が低いことがよく指摘されます.自分はとにかく単細胞でだいたいどんな理論でもすんなり計算できる線形モデルが大好きですが,今どきは非線形化しないとあんまり許してもらえません.非線形化にもいろいろあって,かつては(いまも)カーネル化が猛威を振るってましたが,最近はやっぱり

(ニューラルネット)  f(\boldsymbol x;\boldsymbol \theta):=\sigma(\boldsymbol \theta_3 \boldsymbol \sigma( \boldsymbol \theta_2 \boldsymbol \sigma(\boldsymbol \theta_1 \boldsymbol x + \boldsymbol \theta_1') + \boldsymbol \theta_2' )+\theta_3') \in \mathbb{R}

 が使われます.\sigma()の中身を「層」と言って,上の関数は3層のニューラルネットワーク(NN)と呼ばれます.ニューラルネットの層をたくさんにしたものはDeep NN (DNN)とか呼ばれています.どれくらいならディープなのかは意見の分かれるところで,うかつなことは言えません.

 \sigma(x)は活性化関数と呼ばれるもので, \sigmaには例えばシグモイド関数 (1+\exp(-x))^{-1}とか \tanh(x)とかが使われます.最近はRectified Linear Unit (ReLU)  \max\{0,x\}がよくつかわれるそうです.Weaky ReLU?とか亜種もあったらしいですが意味なかったので最近は消えました(と聞きました). \sigma(x)=xつまり恒等関数を活性化に使うとNNは線形モデルに縮退します.なので,NNは線形モデルを非線形に拡張したモデルと言えます*1

 ニューラルネット(NN)の何が凄いのかというと,真っ先に紹介しなければならないのはCybenkoの1989年の論文*2です.彼(彼女?)は若干関数解析チックな感じの技法を使って「2層のNNはパラメータ数を無限に増やせば任意の連続関数を近似できる」*3ということを証明し,NNのは最強のモデルであることを証明しました.

このあたりの時代にはなんか怪しい証明が散見されたらしく,Kolmogorovの表現定理を使ってNNの表現力の説明をしようとした人がいたり,それに対してブチ切れている人*4もいたそうです.昔話を現代の視点から見るのは面白いですね.

閑話休題,NNは最強のモデルだ!!!ということでみんなNNを使いましょう,という感じになったんですが,実際にやってみるとモデルが複雑すぎるしパラメータの推定がうまくいってるのかもよく分からないみたいな問題が生じました.このあたりはいまだ研究されまくっている超ホットトピックで,様々な理論が作られています.この件については次回以降書いていきたいと思っています.

表現定理はまぁ凄い定理なんですが,ちゃんと読んでみると実は「 \sigma(x)有界関数であるとする」という仮定がついています.先ほど紹介しましたが,最近は活性化関数にReLU (x):=\max\{0,x\}がよくつかわれていて,NNを勉強する皆さんは一度は「ReLUはどう見ても有界じゃない」という点が気になったことがあるかと思うんですが,そのあたりの表現定理も最近いろいろ研究されているようです.最近読んだ論文には,「分子と分母が多項式関数で構成された分数関数はReLUで任意の精度で近似できる」ということが書いてありました.宣伝をかねて自分のTumblrの記録を張っておきます.

https://aokn-kytjp.tumblr.com/post/168355970402/telgarsky-matus-neural-networks-and-rational

現状では分数関数までの表現定理が作れたっぽいですが,連続関数までは拡張できてないっぽいですね.なので,ReLUネットワークを使う際は「任意の関数を近似できる!」という強い言葉を使わずちゃんと「任意の分数関数を近似できる」と言いましょう.(次回に続く)

 

追記(12/20): 任意の連続関数は多項式関数で近似できるので,素子数を無限大にしていいならReLUでも任意の連続関数を任意の精度で近似できますね・・・.謹んでお詫びします.

 

*1:数学系の人はとにかく一般化するのが大好きなので

*2:Cybenko, George. "Approximation by superpositions of a sigmoidal function." Mathematics of Control, Signals, and Systems (MCSS) 2.4 (1989): 303-314.

*3:正しいステートメントは論文を読んでください.

*4:Girosi, Federico, and Tomaso Poggio. “Representation properties of networks: Kolmogorov’s theorem is irrelevant.” Neural Computation 1.4 (1989): 465-469.