コンテンツ自動生成AIの本を読み進める話(第1話)

第1話:ニューラルネットワークとは


この記事は「Chainerで作るコンテンツ自動生成AIプログラミング入門」の読書メモです。1章1話くらいで進めたいけど、一回でまとまらなかったらX.5話でロスタイム回が増えるかもです。

1章は基礎的な単語の紹介とかでした。「聞いたことあるけど実際よう分かってないんよなー」って部分で、且つ本読んでもピンと来なかった部分をググったりして補おうとしたメモです。Chainer用語は省きました。


順伝播型ニューラルネットワーク

これはよく図で見る。フィードフォワードニューラルネットワークとも。ニューロンがたくさんあって、入力データが出力に向かって各ニューロンを一方向に進んでいく(伝搬する)もの。多層パーセプトロンとも呼ばれるみたい。順方向のデータ伝搬、英語ではフォワードプロパゲーション(Forward-propagation)らしい。


損失関数

ニューラルネットワークの教師あり学習に使用される関数で、出力と正解データとの差を数値(損失または誤差と呼ばれる)で返す関数。いろいろな種類があるみたいで、実現したいこととかによって使い分けが必要っぽい(回帰なのか、分類なのか)。



誤差逆伝播法

教師あり学習において、損失関数から返された誤差をニューラルネットワーク内に向かって逆順で伝搬していく方法のこと。英語だとバックプロパゲーション(Back-propagation)。「重み」や「バイアス」といったパラメータ(結合係数)を、出力層の値が正解にできるだけ近づくように更新していくんですね。このパラメータ更新作業のことが、ここで学習と呼ばれる処理になります。

方法としては、「前のニューロンから返ってきた(逆伝搬してきた)誤差を、ニューロン内の計算式の微分を掛け合わせた値を1つ前のニューロンへと返す」という手法。この微分のとこが、最急降下法というアルゴリズムによるものかな?

本の中で「正解データの方向」という単語が出てきたけど、これのニュアンスがいまいち掴めない。ベクトル的な話なのかな?


最急降下法

ある関数 f(x) があって、この関数の値が最小となるような 変数 x を見つけるアルゴリズム。関数 f(x) を x で微分することで求められる導関数は、ある点 x における、もとの関数 f(x) の接線の傾きを表します。この傾きの正負によって変数 x を増減させること繰り返すことで、最小となるポイントを見つけ出すことができる。



誤差勾配

最急降下法で最小値を求める対象となる関数(=ニューロン内の関数)によって描かれる曲線のことだと思う。誤差勾配内には、全体から見て最適な位置にある「最適解」と、部分的に見れば最適な位置にある「局所最適化」があって、適切なアルゴリズムを選択しておかないと、局所最適化にハマったりするらしい。


活性化関数

1つの入力に対して、1つの出力をする関数。ニューロン間を接続するときに使われる。単純な加算や乗算からなる関数ではなく、非線形の関数を用いるところに特徴がある。これは、「線形な関数のみを接続して層の深いニューラルネットワークを作成しても、層の浅いニューラルネットワークと等値の動作しかできない」という問題があるため。


Softmax関数

クラス分類を行うニューラルネットワークの出力に使用される関数。N次元のベクトルを入力値とし、同じくN次元のベクトルを返す。返す値は、「入力のベクトル内における各値の確率を表現するもの」として使用される。

ある画像を入力として「○○に似ている確率がXX%で~」とか分類する系のやつは、これ使ってるんですね。


参考リンク

本読みつつ調べつつで閲覧したサイト

コメント