落ちこぼれナースの統計チャレンジ

元落ちこぼれ看護師(保健師)が、私と同じく統計にドキドキしている看護学生や保健師さんに、簡単な言葉で届けるために始めたブログです。

どんどんモデルを強くしよう!〜多層ネットワークと表現学習・バッチ正規化・最適化の世界〜


今回は、ディープラーニングの中でもよく聞く「多層ネットワーク」「表現学習」「バッチ正規化」「エポック」「バッチサイズ」「最適化手法」について、一気にまとめてお話しします!
難しい数式は一切なしで、ざっくりどういうことをしているのかを理解できる内容にしていきます。

それでは、早速始めましょう。レッツゴーーーー!!!


多層ネットワークってなんぞや

人間の脳は、刺激を受けると「目 → 視覚野 → 記憶や判断をつかさどる領域」と、いくつもの層を通して理解していきます。
ディープラーニングも似たように、「層を重ねることで、より複雑な特徴をとらえる」仕組みを持っています。この層がたくさん積み重なった構造が多層ネットワークです。

ちなみに、この「層」の中には、パーセプトロンと呼ばれる脳細胞のような小さな単位がたくさん並んでいます。
それぞれが少しずつ情報を処理して、全体で複雑な判断を行っているイメージです。

例えば、1枚の画像を見て、ディープラーニングのモデルが「これは猫」と判断する場合を考えてみましょう。

最初の層は「線」や「角(かどです。つのじゃないですよ〜)」を検出し、次の層では「耳の形」や「目の位置」を認識し、さらに上の層で「全体的な猫らしさ」を判断します。
これがいわゆる 表現学習(feature learning) です。

特徴を人間が手作業で指定するのではなく、モデル自身が学び取っていく、というのが最大の特徴です。

看護の世界で言うなら、最初は「顔色」「脈拍」など個別のサインを見て、経験を重ねるうちに「この患者さん、いつもと違うな」という全体の雰囲気を感じ取れるようになる、そんな成長に少し似ています。

バッチ正規化と活性化関数の順番

多層ネットワークでは、層が増えるほど「学習が安定しない」ことが起きます。
データが偏ったり、重みが大きくなりすぎたりして、学習したことが暴走してしまうのです。
これを落ち着かせるのが バッチ正規化(Batch Normalization) です。

簡単に言えば、「入力をちょうどよいバランスに整える」働きをします。
人で言えば、いきなり「推しのライブに当たった!」とか「落選した…」とか、興奮した状態や落ち込みすぎた状態では冷静に判断できませんよね。
その平常心を保つ役割がバッチ正規化です。

バッチ正規化では、平均0、標準偏差が1となるように正規化します。

では、バッチ正規化と以前学習した「活性化関数(ReLUなど)」の順番はどちらが先でしょうか?
バッチ正規化 → 活性化関数の順番が採用されていることが多いようです。
理由は、正規化したあとに活性化させた方が安定して学習しやすいからです。
しかし、常にこの順番が最適だいうわけではないので悪しからず。

バッチ正規化、正則化とどう違う?

ここでよくある質問が、「バッチ正規化って、正則化と同じなの?」というものです。
そう思った方、鋭い!正則化のことをよく覚えていましたね!
実は、どちらも安定した学習を目指しているという点では同じですが、目的と働き方は全く違います

バッチ正規化 は、層ごとの出力を整えることで、「データのばらつきをならす」仕組みです。
学習中に値が極端になりすぎないよう、内部のデータを落ち着かせるのが目的です。

一方、正則化(Regularization) は「重み(モデルのパラメータ)が大きくなりすぎないように制御する」方法です。
これは過学習(訓練データにだけ強く適応してしまうこと)を防ぐために行われます。

要するに、

  • バッチ正規化:データの流れを整える
  • 正則化:モデルの複雑さを抑える

という違いがあります。

エポック・バッチサイズ・最適化手法って何?

学習の設定を決めるときに必ず出てくるのがこの3つです。
一気に覚えると混乱しやすいので、まずはイメージでつかみましょう。

エポック(epoch) は、「すべてのデータを1回学び終える」ことです。
看護学生が教科書を1周読み終えるようなものです。
1回で完璧にはならないので、何周も繰り返して理解を深めます。

バッチサイズ(batch size) は、「一度に学ぶ量」のことです。
10ページずつ読むのか、50ページずつ読むのか。
少ないと理解しやすいけど時間がかかり、多いと効率はいいけどミスに気づきにくくなります。

そして学び方のスタイルそのものを決めるのが 最適化手法(optimizer)です。

代表的なのが SGD(勾配降下法)です。過去記事にも出てきましたね。
これは、誤差を少しずつ減らしながら一歩一歩進む、とても基本的な学び方です。
シンプルですが、道がデコボコしていると途中で迷ったり、進み方が不安定になったりします。

そこで登場するのが改良版の手法たちです。
たとえば Momentum(モーメント法) は、坂を下るボールのように勢いを少しだけ残して進みます。
迷わずスムーズに進みやすくなるのが特徴です。

AdaGrad(アダグラッド) は、学習率(進む速さ)を自分で変えながら進む、少し賢い方法です。

そして、これらを組み合わせてさらに発展させたのが Adam(アダム) です。
Adamは、Momentumの「勢い」とAdaGradの「自動調整」の両方を取り入れて、より安定して速く学習できるように設計されています。

実際にはAdamが使われる場面が多いですが、場合によってはSGDのように素直に学ぶ方法の方がうまくいくこともあります。

「この方法を使えば絶対安心!」というものはないのです。残念。


まとめ

今回のまとめです。

  • 多層ネットワーク:ディープラーニングの層がたくさん積み重なった構造
  • 表現学習:猫の画像などの特徴をモデル自身が学びとっていく
  • バッチ正規化:データのばらつきをならして、モデルの暴走を防ぐ
  • エポック:全てのデータを1回で学び終える
  • バッチサイズ:一度で学ぶ量
  • 最適化手法:学び方のスタイルそのものを決める

見慣れない単語が増えたと思いますが、一歩ずつ、焦らずに一緒に学んでいきましょうね!
それでは、また次の記事でお会いしましょう!!


コメントを残す