データから自動的に特徴を抽出してくれるニューラルネットワークを使った機械学習手法「ディープラーニング」は近年、急速に技術が発達し、画像認識AIや自動運転技術などの発展に役立っています。そんなディープラーニングの仕組みについて、米国電気電子学会が発行するIEEE Spectrumが解説しています。
How Deep Learning Works
https://spectrum.ieee.org/what-is-deep-learning/step-4
ディープラーニングは人口ニューロンを大量につなぎ合わせたニューラルネットワーク上で実行されます。このニューラルネットワークは「入力層(INPUT LAYER)」「隠れ層(HIDDEN LAYERS)」「出力層(OUTPUT LAYER)」に分かれています。IEEE Spectrumは、隠れ層が2層存在するニューラルネットワークで手書きの数字を認識する方法を学習する場合を例に、ディープラーニングの仕組みを解説しています。
まず、今回の例では数字が手書きされたエリアを複数個のマス目に区切り、それぞれのマス目に入力層の人口ニューロンが1つずつ割り当てられます。これらの人工ニューラルは、それぞれのマス目の塗りつぶされている面積が一定値を超えている場合に「発火」し、隠し層の人口ニューロンへ電気信号を受け渡します。学習が完了している場合、隠れ層への電気信号の受け渡し時に適切な「重み」が乗算され、受け渡された電気信号の量が一定値を超えた人口ニューロンが発火。これを繰り返すことで、最終的に手書きされた数字に対応する出力層の人口ニューロンが発火します。つまり、各信号が受け渡される際の重みを調整することで、手書きの数字を認識する精度を向上させることができるわけです。
学習が進んでいない場合、「3」という手書きの数字を「4」と認識する場合があります。このような入力された値と出力された値が異なる場合に、「出力層」「2番目の隠れ層」「1番目の隠れ層」「入力層」の順に正しい出力結果が得られるように重みを調整することで、学習が進みます。
例えば、手書きの「3」を読み取って「4」を出力した場合は、「4」を出力する人口ニューロンが最も多くの電気信号を受け取ったことを示しています。この場合は、「4」ではなく「3」を出力する人口ニューロンが最も多くの電気信号を受け取るようにニューラルネットワーク全体の重みを調整する必要があります。
「3」が最も多くの電気信号を受け取るようにするには、2番目の隠れ層の人口ニューロンから「3」を出力する人口ニューロンへ信号を受け渡す際の重みを大きくすればOK。
次に、1番目の隠れ層でも同様の重み調整が行われます。例えば、今回の例では2番目の隠れ層の最上部に位置する人口ニューロンの発火を抑えるために、その人口ニューロンへ受け渡される電気信号の重みが小さく調整されています。
最後に、入力層でも同様に重みが調整されます。これで、下図の左側に表示された手書きの「3」を認識した場合は、「3」を出力するニューロンが最も多くの電気信号を受け取るようになりました。
ディープラーニングでは、上記のような重みの調整を膨大な数の入力に応じて繰り返すことで学習を進め、高精度な手書き認識モデルなどの成果物を作り出しているというわけです。
この記事のタイトルとURLをコピーする