大規模言語モデル（LLM）の仕組みについて学ぶ part2


# 概要

大規模言語モデル（LLM）に対する理解を深めようシリーズの pert2 です。

学習は、下部に記載の Udemy コースを視聴しながら気になった部分を調べる感じで進めています。

今回は 2 章の「ニューラルネットワークの仕組み」です。

ほとんど座学的な内容なので、自分がメモとして残したものをほぼそのまま記載しておきます。

あとで気が向いたらちゃんと説明用に清書するかも？

# ニューラルネットワークの仕組み

- そもそも人工知能とは？
  - 生物の知能を模して、自ら学習し考える能力を有した情報処理システム
  - 適用領域を絞る＝ある技能やタスクに特化した学習を行うことで、より精度高く、分野によっては人間よりも高い精度で処理をおこなうことが可能になる
  - 汎用的な人工知能
    - ドラえもん
  - 特化型の人工知能
    - 将棋 AI

## 人工知能（AI）の概要

- 機械学習

  - 教師あり学習
  - 教師なし学習
  - 強化学習

- 機械学習とは？

  - さまざまなアルゴリズム...
  - ニューラルネットワーク
    - 人間の神経細胞の仕組み

- モデル
  - 定量的なルールを数式等で表したもの
    - 多数の「学習するパラメータ」「ハイパーパラメータ」をもつ
    - 学習パラメータ
      - 学習時に調整する、モデル構築時はランダムに設定することが多い
    - ハイパーパラメータ
      - 学習時は変更しない、モデル構築時は慎重に設定する
    - 各パラメータの特徴...実際の使い方がわかってないから現時点ではイメージしにくいかも？

## ニューラルネットワーク

- ニューラルネットワークとは
  - 脳が情報を処理する方法を模倣しようとするコンピュータシステムの種類
  - 脳内のニューロンの接続ネットワークに似せて設計される
  - 「層」と呼ばれるノードの集まりから構成される
  - 各ノードは情報を受け取り、処理し、出力を生成する
  - 入力層（インプット）／出力層（アウトプット）／隠れ層（内部処理）
  - 学習能力をもち、特定のタスクをより良くこなすように自己改善できる
  - 学習過程で大量のデータが必要となる「訓練」と呼ばれる
  - 訓練データを通じてネットワークは特定の問題を解くための最適な内部パラメータ（重み）を自動的に調整する
  - 画像認識、自然言語処理、予測モデリングなど多数の分野で応用されている
  - ディープラーニングと呼ばれる一連の技術の基盤であり、AI の進歩に大いに貢献している
- 人工ニューロン
  - ニューロンへの入力に重みをかけた値をすべて足し合わせてバイアスを加える
  - 重みはシナプスの伝達効率
  - バイアスはニューロンの感度
  - 上記の値を活性化関数で処理し出力とする
  - 活性化関数は値を信号に変換する関数
  - 人工ニューロンを複数組み合わせて層状に並べたもの「人工ニューラルネットワーク」
  - 人工ニューラルネットワーク
    - 数値を入力し情報を伝播させ結果を出力する
    - 出力は確率などの予測値として解釈可能、ネットワークによって予測を行うことが可能
    - ニューロンや層の数を増やすことで高い表現力を発揮する

## ディープラーニング

- ディープラーニングとは
  - 人工知能（AI）の一部、特に機械学習の一種
  - 大量のデータからパターンを学び取り、それに基づいて判断を下す
  - ニューラルネットワーク（人間の脳が情報を処理する方法を模倣したもの）に依存する
  - ディープラーニングの「深さ」は、ニューラルネットワークの層の数、すなわち「深さ」を指す
  - 一般的に「入力層」「隠れ層（１つ以上）」「出力層」の３つから成る
  - 入力層：データを受け取る、隠れ層：データを処理する、出力層：最終結果を生成する
  - これらの層は「ノード」または「ニューロン」という単位で構成され複雑な方法で互いに接続されている
  - ディープラーニングは大量のデータと高度な計算能力を必要とするが、結果として高い精度でタスクを実行することが可能
  - 自動運転車、音声認識、画像認識、自然言語処理など多くの領域で広く利用されている
  - 多数の層からなるニューラルネットワークの学習のこと
  - ヒトの知能に部分的に迫る高い性能を発揮する
  - 順伝播と逆伝播
    - 順伝播
      - 入力 → 出力の流れ。訓練済みのモデルを使って予測する場合などに用いる。
    - 逆伝播
      - 出力 → 入力の流れ。ニューラルネットワークの学習の際に用いる。
  - バックプロパゲーション（誤差逆伝播法）
    - ニューラルネットワークは出力と正解の誤差が小さくなるように重みとバイアスを調整することで学習することができる
    - 一層ずつ遡るように誤差を伝播させて重みとバイアスを更新する
  - 活性化関数
    - ニューロンの興奮／抑制状態を決める関数
    - 関数への入力を興奮／抑制状態を表す値に変換する
    - シグモイド関数
    - ReLU
  - 損失関数（誤差関数）
    - 出力と正解の間の誤差を定義する関数
    - 二乗和誤差
    - 交差エントロピー誤差
  - 最適化アルゴリズム
    - パラメータを調整し誤差を最小化するためのアルゴリズム
    - SGD
      - 確率的勾配降下法
    - Adam
      - 学習の進行度合いや過去の履歴に基づき、更新量が調整される
  - ディープラーニングと脳の比較
    - バックプロパゲーション
      - ディープラーニングにおいて必須、実際の脳でこれに相当する事象は観察されていない
    - 層
      - ディープラーニングでは縦に深い、100 層を超えることもある
      - 実際の脳では大脳皮質 6 層、小脳皮質 3 層
    - 正解
      - ディープラーニングで必須、実際の脳では大脳は必要ない、小脳は必要とする
    - ニューロンの接続
      - ディープラーニングでは隣の層のニューロンと接続
      - 実際の脳では投射と介在？近傍および遠方との接続？

## 様々なニューラルネットワーク

- ニューラルネットワークの種類
  - フィードフォワードニューラルネットワーク（Feedforward Neural Networks:FNN）
    - 最も基本的な NN の形。情報は入力層から出力層へ一方向で流れる。
  - 畳み込みニューラルネットワーク（Convolutional Neural Networks:CNN）
    - 画像認識や音声認識のタスクに適している。フィルター（カーネル）を用いて入力データを畳み込む（フィルタリングする）ことでデータの特徴を抽出する。
  - 再帰型ニューラルネットワーク（Recurrent Neural Networks:RNN）
    - シーケンス（時系列）データに対して効果的。自然言語処理や音声認識などに広く使用される。前の時間ステップの情報を次の時間ステップへ伝える能力を持つ。
  - 長短期記憶（Long Short-Term Memory:LSTM）
    - RNN の一種で、情報を長期間保持できる特性を持つ。これにより、長いシーケンスデータを扱う際の問題を解決する。
  - 変換器（Transformer）
    - 自然言語処理の分野で広く使用される。シーケンス内の各要素が互いにどの程度影響を持つかを学習する。
  - 自己組織化マップ（Self-Organizing Maps:SOM）
    - 教師なし学習を用いたニューラルネットワーク。高次元データを低次元データ（通常は二次元）空間にマッピングする。
  - 生成敵対ネットワーク（Generative 　 Adversarial Networks:GAN）
    - 画像生成やスタイル変換などのタスクに使われる。2 つのサブネットワーク、生成ネットワークと判断ネットワークからなる。互いに競争しながら学習する。

# まとめ

- めちゃくちゃ難しいな...
- けど、1 つ 1 つの概要が掴めたのと、なんとなくそれぞれの技術や用語の繋がりを感じることができた気がする！
- けっこう概念的な内容も多くて、実装サンプルはあまり何してるかわからん
- 実装多めに学ぶほうが自分は身についた感があっていいのかも？

# 参考

- [大規模言語モデル（LLM）の仕組み入門【ChatGPT/GPT-4/Transformer】](https://www.udemy.com/share/108Xrs3@sw-27RMqBKFHAgS8U1DM5y0ypOuJKWb0hQxvNXcu2nV8HKRRZdZxZJ-x0gKk1fGtng==/)
  - Udemy や YouTube で AI 関連の講義をされている我妻さんのコース（有料です）
- [Attention Is All You Need](https://arxiv.org/abs/1706.03762)
  - このサイトの`View PDF`をクリック（タップ）すると英語の論文が読めます