これはhttp://mitochondrion.jp/に掲載している「医学日記」を 検索用に 1 記事 1 ファイルとして形成し直したものです。 簡単なプログラムで自動生成しているので、体裁の乱れなどが一部にあるかと思われます。 通して読むには、トップページからオリジナルページにアクセスしてください。


2024/04/18 多層パーセプトロンモデル (1)

医学の話は保留して、深層学習の話をしよう。インターネット上には深層学習について「わかりやすく」解説した文書が多数公開されているが、それらの著者が、いったい、どれほど正しく理解した上で記載しているのかは疑わしい。おそらく、表面的な使い方だけを習得して、内容は他人が書いた文章を受け売りしている者が多いのではないか。というのも、本当に理解しようとすれば当然に湧くであろう疑問に対して言及していない例が非常に多いのである。そのような浅い理解で適切に扱えるほど深層学習は簡単なものではない。

多層パーセプトロンモデルについては東海林智也氏による解説が簡潔で明快である。ただし、東海林氏の解説は数学が苦手な人には難解であろうから、私が補足しよう。

まず前提として、このモデルへの入力は有限個の数値として与えられているものとする。1 個の数値は「入力層 input layer」において 1 個の「パーセプトロン」に入力される。パーセプトロンは「ノード」などと呼ばれることもある。「層」というのは、いくつかのパーセプトロンを集めたもののことである。入力層の各パーセプトロンは、入力された値を a 倍して b を 加える、という操作を行い、出力する。a や b の値は任意であるが、これらをうまい具合に調整する作業を「学習」と呼んでいる。

入力層の次には何層かの「隠れ層 hidden layer」が置かれる。層の数はいくつでも構わないし、各層に含まれるパーセプトロンの数も任意である。通常、隠れ層の全てのパーセプトロンは、直前の層に含まれる全てのパーセプトロンの出力を入力として受け取る。たとえば、入力層に 128 個、最初の隠れ層に 512 個のパーセプトロンが含まれているとすれば、入力層のパーセプトロンは各々 512 個の隠れ層パーセプトロンに出力を送るし、また隠れ層の各パーセプトロンは入力層から 128 個の入力を受け取ることになる。そして隠れ層パーセプトロンは、それらの入力に対して線型な計算を行い、出力する。線型というのは、各入力値を何倍かして、さらに定数を加える、という意味である。この「何倍か」というのは、入力ごとに異なる。すなわち、あるパーセプトロンから受けた入力は 3 倍し、別のパーセプトロンから受けた入力は 0.1 倍する、といった具合である。繰り返すが、この「何倍するか」の値を調整するのが「学習」である。

なお、各々のパーセプトロンが前段の全てのパーセプトロンから入力を受け取る状態にあるものを「全結合層」と呼ぶ。多層パーセプトロンモデルは全ての層が全結合層であるのが通常であるが、本質的には、これは必須ではないだろう。ただし、全結合層にしないことに利点があるとは思われない。

隠れ層を何層か経たのちに、「出力層 output layer」が置かれる。出力層に含まれるパーセプトロンの数は、そのモデルで何をしたいかによって決まる。たとえば 0 から 9 までの数字、つまり 10 通りのパターンを判別したいのであれば、出力層には 10 個のパーセプトロンを含めるのがわかりやすい。「3」と書かれた画像を入力した時には 3 番目のパーセプトロンが大きな値を出力し、他のパーセプトロンは小さな値を出力する、といった具合に学習できれば便利である。何が書かれているかわからない画像を入力し、仮に 8 番目のパーセプトロンが大きな値を出力すれば、書かれていた数字は「8」であろう、と推定できよう。問題は、そのような学習がはたして可能なのか、という点である。

長くなってきたので、続きは次回にしよう。


Home
Copyright (c) Francesco