ゼロからAI理論を再構築する

ー 文系エンジニアがAIの内部構造をゼロから理解する記録 ー

機械学習

事前学習とBERT・GPTの違い

前回までにTransformerの仕組みを見てきました。ここからの問題は、そのTransformerに何をどう学習させるかです。 人間がラベルを付けたデータで学習させる(教師あり学習)には量の限界があります。一方、インターネット上にはラベルのないテキストが大量に…

Transformer:RNNを捨てて並列処理する

2017年にVaswaniらが発表した"Attention Is All You Need"は、タイトルの通り「Attentionだけでいい」という提案でした。RNNもLSTMも使わず、Attentionだけで系列データを処理する。このモデルがTransformerです。 前回、Attentionがあれば入力のどの位置に…

Attention(注意機構):必要な情報を都度参照する

前回、Encoder-Decoderモデルでは入力を固定長ベクトルに圧縮するため、長い入力で情報が失われるという話を書きました。Attention(注意機構)は、この問題を「入力の全ステップの情報を保持しておき、必要なときに参照する」という方法で解消します。 Enco…

Encoder-Decoder:入力と出力の長さが違う問題を解く

翻訳を考えると、入力と出力の長さが違います。「こんにちは」は4文字で"Hello"は5文字。単語数も文法構造も言語によって異なるので、入力と出力を1対1で対応させることができません。 Encoder-Decoder(Seq2Seq)モデルは、入力系列を一旦ベクトルに圧縮し…

LSTM:忘れる・覚える・取り出すを制御する

前回、RNNは長い系列で勾配消失が起きるため、長期的な依存関係を学ぶのが苦手だという話を書きました。LSTM(Long Short-Term Memory)は、この問題に対処するためにゲート機構を導入したRNNの拡張です。 セル状態という別経路 LSTMが通常のRNNと違うのは、…

再帰型ニューラルネットワーク(RNN):順番のあるデータを扱う

これまでのネットワークは、入力を受け取って出力を返すだけで、過去の入力を覚えていませんでした。画像認識ならそれで問題ないのですが、文章や音声のように順番に意味があるデータだと困ります。「彼は」という主語を忘れたら、後に続く動詞の意味がわか…

畳み込みニューラルネットワーク(CNN):画像の構造を活かす

これまでの全結合ネットワークは、画像を1本の長いベクトルに変換してから処理していました。縦横の並びもピクセル同士の隣接関係もすべて捨てて、ただの数値の列として扱う。人間が画像を見るときは隣り合うピクセルの関係からエッジや形を読み取っているの…

バッチ正規化とドロップアウト:学習を安定させて過学習を防ぐ

前回、ReLUと重みの初期化で勾配消失が解消されたという話を書きました。ただ、勾配が通るようになっただけでは十分ではなくて、深いネットワークには「学習が不安定になる」問題と「訓練データを丸暗記してしまう」問題がまだ残っています。 今回はこの2つ…

勾配消失とReLU:深いネットワークが学習できなかった理由

前回、層を重ねると抽象度の異なる特徴を段階的に抽出できるという話を書きました。ただ、2010年代初頭まで、ネットワークを深くすると学習がうまくいかないという問題がありました。理論的には深いほうがいいのに、実際に深くすると性能が出ない。 今回はそ…

多層パーセプトロン:層を重ねると何が変わるか

前回、線形計算と活性化関数の組み合わせでモデルが分類をできるようになるという話を書きました。ただ、あれは1層だけの話です。現実の問題、たとえば入り組んだ境界線を持つデータの分類や画像認識は、1層では表現力が足りません。 今回は、この層を複数重…

活性化関数とロジスティック回帰:直線を曲げて分類する

前回、線形モデルは入力と出力の関係を直線でしか表せないという話を書きました。ただ、現実の問題には「合格か不合格か」「スパムか否か」のように、はい/いいえで答える分類タスクが多くあります。線形モデルの出力は実数なので、このままでは分類には使い…

線形モデル:直線で世界を近似する

ディープラーニングがどれだけ複雑に見えても、一番小さい単位に分解すると線形な計算が出てきます。入力に重みをかけて足す。今回はこの線形モデルについて、何ができて何ができないのかを整理します。 出力は入力の重み付き和 線形モデルの考え方はシンプ…

ミニバッチ学習とSGD:全部見なくても学習できる理由

前回、勾配降下法で損失を減らしていくという話を書きました。ただ、あの説明は「全データの勾配をまとめて計算する」前提になっていて、データが数百万件ある現実のタスクだとそのまま使うのは厳しいです。1回パラメータを更新するだけで全データを走査する…

学習という名の山下り:最適化と微分

前回、機械学習は「データ」「モデル」「損失関数」の3つでできているという話を書きました。ただ、この3つが揃っても、それだけではモデルは何も学びません。損失関数が「今の予測はこれだけズレている」と教えてくれても、パラメータをどう直せばいいかが…

機械学習の骨組み:データ、モデル、損失関数

機械学習のアルゴリズムはいくつもありますが、分解してみると構造は意外と同じです。「データ」「モデル」「損失関数」。この3つが揃えば、あとは組み合わせ方の違いでしかありません。 個々のアルゴリズムに入る前に、まずこの骨組みを押さえておくと、新…