ニューラルネットワークって何ですか?
人間の脳の神経細胞(ニューロン)のしくみを模倣した機械学習モデルだよ。ディープラーニングの基盤となる技術なんだ。
| 層 | 役割 |
|---|---|
| 入力層(Input Layer) | データを受け取る層(特徴量の数=ノード数) |
| 中間層(Hidden Layer) | データを加工・変換する層。「隠れ層」とも呼ぶ |
| 出力層(Output Layer) | 最終的な予測結果を出す層 |
中間層が2層以上あるものをディープニューラルネットワーク(DNN)と呼び、その学習をディープラーニング(深層学習)と言う。
ニューラルネットワークの一番最初のモデルって何ですか?
1943年にマカロック(McCulloch)とピッツ(Pitts)が提案した形式ニューロンだよ。人間の脳の神経細胞の動きを数学的にモデル化した最初の試みなんだ。
形式ニューロン(1943年、マカロック&ピッツ):ニューロンの数学モデル。学習機能なし
→ パーセプトロン(1958年、ローゼンブラット):重みを自動で学習できるように進化
1つのニューロンはどういう仕組みなんですか?
パーセプトロンと呼ばれる最もシンプルなニューラルネットワークだよ。入力に重みをかけて合計し、活性化関数に通して出力する。学習=この重みを最適に調整することなんだ。
パーセプトロンには限界があるんですか?
単純パーセプトロンは線形分離可能な問題のみしか解けないんだ。有名なXOR問題が解けなかったことが問題になったけど、多層パーセプトロン(MLP)で中間層を追加することで解決されたよ。
層:単層(入力→出力)
解ける問題:線形分離可能な問題のみ
XOR問題:解けない
層:多層(入力→中間層→出力)
解ける問題:非線形問題も解ける
XOR問題:解ける
活性化関数って何のためにあるんですか?
合計値をそのまま出すと単純な線形変換にしかならないんだ。活性化関数で非線形に変換することで、複雑なパターンを学習可能になるんだよ。活性化関数がないと多層にしても線形のままなんだ。
| 活性化関数 | 特徴 | 主な用途 |
|---|---|---|
| シグモイド | 0〜1に変換。勾配消失しやすい | 出力層(2クラス分類) |
| tanh | -1〜+1に変換 | 中間層(シグモイドより少し改善) |
| ReLU | 0以下→0、0以上→そのまま。シンプルで高速 | 中間層で最もよく使われる |
| ソフトマックス | 全出力の合計が1(確率として解釈可能) | 出力層(多クラス分類) |
ニューラルネットワークはどうやって学習するんですか?
大きく5つのステップを繰り返すんだ。まず順伝播で予測を出して、損失計算でズレを測って、逆伝播で各重みの修正量を計算して、勾配降下法で重みを更新する。これの繰り返しだよ。
1. 順伝播(Forward Propagation): 入力→中間層→出力の順にデータを流して予測を出す
2. 損失計算: 予測と正解のズレを損失関数で計算
3. 逆伝播(Backpropagation): 出力→入力の方向に誤差を逆向きに伝えて、各重みの修正量を計算
4. 重み更新: 勾配降下法で重みを少しずつ調整
5. 1〜4を繰り返す
| 種類 | 説明 |
|---|---|
| バッチ勾配降下法 | 全データで勾配を計算→更新。安定だが遅い |
| SGD(確率的勾配降下法) | 全データを一気に使わず、ミニバッチに分けて少しずつ更新。現在の主流 |
1回の更新で重みをどれだけ動かすかの幅。大きすぎると発散、小さすぎると収束が遅い。
| 課題 | 説明 | 対策 |
|---|---|---|
| 勾配消失問題 | 層が深いと逆伝播で勾配がどんどん小さくなり学習が進まない | ReLUの使用、残差接続など |
| 過学習 | パラメータが多いため過学習しやすい | ドロップアウト、正則化、データ増強 |
| 計算コスト | 大量のパラメータと繰り返し計算が必要 | GPUの活用 |
| 解釈の難しさ | なぜその予測になったか説明しにくい | ブラックボックスモデル |
学習時にランダムにノードを無効化(一時的に削除)して過学習を防ぐ手法。毎回異なるネットワーク構造で学習するため、アンサンブル学習に近い効果がある。