初心者データサイエンティストの備忘録

調べたことは全部ここに書いて自分の辞書を作る

【読書記録】なっとく!ディープラーニング_第4章

目次

はじめに

 現在、ディープラーニング(DL)は様々な分野で使われています。今流行の生成AIなんて、DLの塊です。また、私の所属する会社で行われているセキュリティネットワークの研究においても、DLは重要な意味合いを持っています。
 その一方で、私自身ちゃんとDLについて過去に勉強してきたことがありません。したがって、私にとってDLは、データサイエンスにおける超重要な技術であるにもかかわらず、自信を持って語ることができない技術の一つになっています。そこで2023年度の下期は、体系的にDLを学ぶべくなっとく!ディープラーニングを読むことにしました。
 本記事では、自分が躓いた第4章について説明していきたいと思います。

第4章の理解の仕方

 第4章のテーマは、勾配降下法です。私自身は本書の説明だけでは理解ができず、ネットでググった数式を見ながら本書を読み解きました。私は下記の流れで第4章を理解しました。

  1. 勾配降下法の更新式を理解する
  2. データが一つの場合の勾配降下法の更新式を、実際に導出する
  3. 本書に書かれているコードと照らし合わせる

勾配降下法の更新式を理解する

 図1のような最もシンプルなニューラルネットワークを考えます。

図1:特徴量と目的変数がともに1次元で1層のニューラルネットワーク

このとき、\omegaの勾配降下法の更新式は、


\omega _ {(n+1)} = \omega _ {(n)} - \eta \dfrac{\partial L}{\partial \omega}(\omega _ {(n)} )

となります。ただし、\omega _ {(n+1)}は更新後のパラメータ、\omega _ {(n)}は更新前のパラメータ、\etaは学習率、Lは損失関数です。

 勾配降下法の更新式がこのような形になっている理由については、勾配降下法が分かりやすかったです。

 大事なことは、パラメータを更新する方向\dfrac{\partial L}{\partial \omega}(\omega _ {(n)} )で定め、更新する大きさを学習率\etaで定めるということです。

データが一つの場合の勾配降下法の更新式を、実際に導出する

 本書では、損失関数LとしてMean Square Error(MSE)を使っています。また、図1より予測値は\omega xとなります。したがって、


\begin{aligned}
\dfrac{\partial L}{\partial \omega} & = \dfrac{\partial}{\partial \omega}(y-\omega x)^2 \\
&= -2x(y-\omega x)
\end{aligned}

となります。したがって、更新式は、


\begin{aligned}
\omega _ {(n+1)} &= \omega _ {(n)} - \eta \times (-2x(y-\omega x)) \\
&= \omega _ {(n)} - 2\eta \times x(\omega x-y) \\
\end{aligned}

となります。

本書に書かれているコードと照らし合わせる

 本書のp. 56, 57に書かれているコードと更新式を照らし合わせたものが表1です。

表1:コードと更新式の対応表

まとめ

 本書の第4章では、勾配降下法について説明されています。繰り返しになりますが、私は下記の手順で理解しました。

  1. 勾配降下法の更新式を理解する
  2. データが一つの場合の勾配降下法の更新式を、実際に導出する
  3. 本書に書かれているコードと照らし合わせる

 これにより、特徴量・目的変数が1次元の1層のニューラルネットワークについて、パラメータの学習の仕方を理解することができました。 これで、特徴量・目的変数が複数次元で、複数層のニューラルネットワークについて勉強していく準備ができたと考えています。