はてなキーワード: 誤差逆伝播とは
私としては国産なり日本発のLLM開発を諦めてはならないし, その可能性は十分にあると信じています. 既に出ているものも多数ございますし.
本エントリはそれとは全く別の,
「国産LLMの人」という方についてです.
---------
色々思うところがありまして.
例えば,
と繰り返し主張しておられる.
そのような単純な活性化関数では過学習か誤差が噴出するかの二択でしょう. 実際, 氏のツイートは正にその状態を示唆しているように見受けられます.
```x
▶︎ 誤差が0.12あるだけでとんでもないエラー率になる。誤差関数が雑だから本当はもっとあるのかもしれないが、改善の余地がある。
▶︎ 問題は、どのような状態の時に学習が成功し、失敗するのかがまだ分かっていない。表現力は十分に持っているはずなのに、なぜか学習しない。
```
過学習に至ったときにうまくいってるように見えるだけでしょう.
```x
▶︎過学習ではないですね。データセットが小さいかつ、それ以外の範囲が出ないことが分かっているので。XORは2^2パターン全て学習できれば精度が100%になりますが、それは過学習とは呼ばないのと同じで、今回の初期のRNNに関しても文字数が圧倒的に少なく、パターンも決まっているので。
```
……と主張されておられる.
私が思うにそれは単純な写像を, ニューロンを使って回り道して作っている状態. LLMは局所的にはたしかに線形写像ですが,全体で見ても線型写像だとしたらそれは複雑な文章生成には到底耐えられないかと. (十分に大きいモデルをマクロに見ると非線形性があるので)
大規模言語モデル=LLMを目指すとして,
そもそもエンベディングテーブルとは数百億から下手すれば1兆語彙を, たった数千〜1万次元程度のベクトルで表現する, 凄まじく繊細なテーブルです.
それをGELUやSwiGLUのような綺麗な活性化関数を使わずに, しかも爆速でやると仰っている. さすがにそのレベルの革新性を主張するには根拠がない限り, 飛躍が過ぎると判断されるかと.
そのやり方で, 例えば1億語彙までスケールするとして2乗の1京回×数千次元をバックプロパゲーションなしで学習するというのは……さすがにきついかと.
バックプロパゲーションが要らないという主張については活性化関数がきわめて単純だから. それなら全層に渡しても「修正」できるでしょう.つまり自明に近いですね.
勾配消失なんて関係ない, という主張については, xorというゼロイチでしか見ないのであれば勾配消失も何もありません. 永遠に層を貫通するわけですから, 何層増やそうがほとんど意味が出てこない. つまりそれは実際には極めて浅い層だけで動いてると思われる.
「こんに」から「ち」「は」が次文予測できたとの報告ですが, まぁ……それが「大規模言語モデル=LLM」にそのままスケールできると言い切れるのはなぜでしょうか?
MNISTだけでなくGLUEあたりをパスしてからにした方がいいと考える次第です.
```x
▶︎ 私が批判されながら、誤差逆伝播に変わるアルゴリズムや精度を30%→100%まで持っていく頭のおかしい行動が取れる理由は、以下の思想があるから。
▶︎ 1. 私のNNは高次元の万能近似回路
▶︎ 3. 何十回と失敗した経験則から、原因と対策が殆どわかっている
```
殆どわかってる, との事ですが, なんで上手くいってるのか分かってないとも自分で明言なさっている. ↓↓↓
```x
▶︎ 学習が進まないの、謎。単体だと上手く動いてるはず?何が原因だろうか。
▶︎ 学習アルゴリズム開発者本人ですが、なぜ学習が進むのかは謎です。
```
既存手法があまたの失敗の上で最適だと言われてきてる経緯もよく知った方がよい.
それはごく初期にそういった様々な試行錯誤のうえで「やはりGELUやBPが現実的にいい性能が出せるし, コストも抑えてこれである」と様々な研究者が合意しているような状況.
そして, そもそもアカデミアは自分のアイディアも含めて新規手法を常に疑ってかかるのが基本姿勢.
ジャーナルに「不確実さ」を載せないためで, それが積み重なると自他問わず全ての研究が信用出来なくなってしまうため. だから懐疑的になる. 個人攻撃ではないのです.
出さないのも自由ですが, 前述の理由で信頼を得られない. これは言動に一切関わらず, その厳密性をフラットに評価してそう判断しているから. 感情ではなく, 論理として.
……と, ここまで色々と蛇足なアドバイスをさせていただいたものの, この投稿に対しても
```x
▶︎ 何もわかってない人が国産LLMのやつ批判してて吹いたww
```
といったツイートをなさるのでしょう. (過去に氏がそう仰っていたので)
先に答えておきますね.
「自分のやってることがご自分でお分かりにならないようなら, 私にわかるわけがないですし仰る通りです. ただ, 詳しい者として一般論は申し上げられます.」
まだ間に合いますので, 大学院あたりまで修了なさるのがおすすめです.
Twitterに何を投稿しようと自由です. でも自分で違和感を見て見ないふりするのだけはやめたほうがよろしい. 既存手法と同等に自分の手法を疑うこと, これは研究者としての基本姿勢です.
研究テーマ設定を見かけるとついつい, より良い筋でやっていけるようアドバイスしたくなってしまう性が染み付いてしまっているためでして.
もちろん, 関わりのない方ですので蛇足でしかないのですが, 多くの方に影響力をお持ちでありつつ研究の進め方については独自の姿勢を持つように見受けられまして.
それはもちろん根本的には自由でありつつ, 相談相手の需要がもしあればひとつの(一般的)意見をお渡しできるかなと思いキーボードを叩いた次第です.
どうか匿名でご勘弁を.
--------
【追記】
おそらく氏のやられていることは順伝播 (forward propagation) のみでの学習かと思いますが, この手法の先行研究は山のように存在します.
(Hebbian theory, Perceptron, Adaptive Linear Neuron:ADALIN, Widrow-Hoff learning rule...)
見つけられないとすれば, 古典的 (1960~1980年頃) ゆえに電子化されていないためです. 現行の商用LLMがそれらの情報を簡単に連想して引用できず, DR等で検索しても出てこないのはその為でしょう.
これらに簡単にアクセスするためにはやはり学術機関に所属して図書館を利用するのが圧倒的に楽です. マイクロフィルムや紙媒体でしか残っていないものもありますから.
また, 有料データベースであるJSTOR, IEEE Xplore, Springer Linkなどにもアクセスが出来ます.
なお, arXivはあくまでプレプリントですので, 論文として引用するには査読を通過したものをつよく推奨します. ジャーナルもものによっては不十分な査読で掲載されてしまいますので, トップカンファレンスのものを信頼できる足がかりの論理として扱うのが基本的な考え方となります.
また, 「分からなければ (大量に貼った) 論文を読んでください」という姿勢は, それぞれをどう引用し, どのように自分の主張と論理的に接続するかの説明がなされなければ根拠として見なされないのが一般的な考え方です.
ブログとしての掲載はもちろん自由ですが, それらを十分な説明として取り扱ってもらうには至らないでしょう.
論文を引用するからにはそういった丁寧な取り扱いをすることを期待されるものです. 「敬意がない」と他の方から指摘されるのはおそらくそれが理由でしょう.
これは, 過去の論文を引用しながら新たな主張を論文として営々と積み上げ続けてきたアカデミアの「過去への感謝」という慣習です.
人の行動は自由ですから「こうしろ」とは申し上げませんが, この暗黙の了解を保持する (≈研究機関に所属したことのある) 方からの理解を得るのはこのままですときわめて難しいであろう, とアドバイスさせてください.
こういった主張のやり方を自分なりに一から身につけるのはたいへん難しいので, どなたかそういった手法を学べる信頼できる方に師事することをおすすめしている次第です.
大規模言語モデル(LLM)の根幹にあるのは数学的な原理です。
ここでは、その仕組みを3つの要点に絞って、数式を交えながらシンプルに解説します。
LLMの最も基本的なタスクは、「ある単語の並び(文脈)が与えられたときに、次に来る単語は何か?」を確率的に予測することです。これを数式で表すと、以下のようになります。
LLMは、インターネット上のブログ記事や書籍といった膨大なテキストデータを読み込みます。
そして、文章中のあらゆる箇所で「次の単語」を予測するクイズを延々と解き続けます。
モデルは、P(晴れ | 今日の天気は) の確率が100% (または1.0)に近づくように、内部のパラメータ(後述する重み)を少しだけ調整します。
このプロセスを何十億、何兆回と繰り返すことで、モデルは単語の様々なつながり方や文法、さらには世界の知識に関するパターンを学習していきます。
学習済みのモデルに「AIの未来は」と入力すると、モデルは語彙に含まれる全単語に対して、次に来る確率を計算します。
...
そして、最も確率の高い「明るい」を選んだり、確率分布に従ってランダムに単語を選んだりすることで、文章を生成していくのです。
では、どのようにしてLLMは単なる単語の並びだけでなく、複雑な文脈を理解するのでしょうか?
その技術が Transformerであり、その学習を支えるのが バックプロパゲーション です。
Transformerの最大の特徴は自己注意機構 (Self-Attention) です。
これは、文章中の単語同士の関連性の強さを計算し、どの単語に「注意」を向けるべきかを判断する仕組みです。
例えば、「その猫は疲れていた。なぜなら一日中ネズミを追いかけていたからだ。」という文において、「その猫」が「疲れていた」理由を理解するためには、「追いかけていた」という単語との関連性が重要です。
自己注意機構は、各単語について以下の3つのベクトルを生成します。
そして、以下の計算(概念式)によって、文脈を反映した新しい単語表現を作り出します。
Attention(Q, K, V) = softmax( (Q Kᵀ) / √(dₖ) ) V
1. Q Kᵀ: Queryと各Keyの関連度(内積)を計算します。似ている単語ほど値が大きくなります。
2. / √(dₖ): 値が大きくなりすぎないように調整します(スケーリング)。
3. softmax: 計算した関連度スコアを、合計が1になる確率分布に変換します。これにより、関連性の強い単語ほど高い重みが与えられます。
4. V: この重みを使って、各単語の情報(Value)を重み付けして足し合わせます。
この結果、単語は元の意味だけでなく、「文脈の中でどのような役割を果たしているか」という情報を含んだベクトルに変換されます。
Transformerはこの処理を何層も積み重ねることで、非常に複雑で長期的な依存関係を捉えることができるのです。
バックプロパゲーション(誤差逆伝播法)は、モデルの予測と正解との「誤差」を計算し、その誤差を小さくするために、モデル内の膨大な数のパラメータ(重み)をどう調整すればよいかを教えてくれるアルゴリズムです。
1. 順伝播 (Forward Pass): 入力(コンテキスト)をTransformerに通し、次の単語の確率分布を予測します。
2. 損失計算 (Loss Calculation): 予測した確率分布と、正解の単語とのズレ(誤差)を損失関数(例:クロスエントロピー誤差)で計算します。損失が大きいほど、予測が間違っていることを意味します。`Loss = -Σ yᵢ log(pᵢ)` (yᵢ は正解なら1, それ以外は0。pᵢ はモデルの予測確率)
3. 逆伝播 (Backward Pass): この損失を、出力層から入力層に向かって逆方向に伝播させます。微分の連鎖律を使い、「各パラメータが最終的な損失にどれだけ貢献したか(=勾配)」を計算します。
4. パラメータ更新: この勾配に基づき、損失が小さくなる方向へ各パラメータを少しだけ更新します。
この「予測 → 誤差計算 → 勾配計算 → 更新」というサイクルが、LLMの学習の基本です。
バックプロパゲーションで計算された勾配を使って、具体的にどのようにパラメータを更新するかを決めるのがオプティマイザ(最適化手法)の役割です。
最も基本的な考え方は、損失という名の「谷」の底(最小値)に向かって、勾配(傾き)が最も急な方向に一歩ずつ下っていく勾配降下法 (Gradient Descent)です。
θ_new = θ_old - η ∇L
現在、最も広く使われているオプティマイザの一つが Adam です。これは、勾配降下法をより賢くしたもので、主に2つの工夫がされています。
1. 慣性 (Momentum): 過去の勾配の移動平均を保持します。これにより、坂道を転がるボールのように、同じ方向に進み続ける場合は加速し、学習が停滞しにくくなります。
2. 適応的な学習率 (Adaptive Learning Rate): パラメータごとに学習率を自動で調整します。頻繁に更新されるパラメータは慎重に(学習率を小さく)、あまり更新されないパラメータは大胆に(学習率を大きく)更新することで、学習を効率化します。
Adamのような優れたオプティマイザがあるからこそ、何十億ものパラメータを持つ巨大なLLMを、現実的な時間で安定して学習させることができるのです。
Transformer というアーキテクチャが、自己注意機構によって文脈を理解し、次の単語の確率 P(next token | context) を予測する。
その予測と正解の誤差を バックプロパゲーション で計算し、その誤差を最小化するように Adam などのオプティマイザがモデルのパラメータを効率的に更新する。
ビッグデータ解析で統計が判る奴がほしい、AIに詳しい機械学習を使える奴が欲しい。
産業界とは言わなくても、一部の経営者が言うセリフっていつも同じだ。
一瞬でブームに乗って金を集めて仕事にしてしまえば、ブームが終わるまで稼げる。
だから、絶対にそういう経営者の言うことを聞いて、将来を決めてはいけない。
いま日本に圧倒的に足りないのは人工知能に詳しい人材 - shi3zの長文日記
人材が足りないとは言うが、じゃあ具体的にどの程度足りないのか(つまり需要の絶対数だ)は言わない
例えば、大雑把に大学生は50万人程度卒業する。就職希望者は38万人で、内定者数が35万人。
3万人の内定が無い学生が、全員AI(ディープラーニング)を学んだとして、活躍の場はあるか。
無い。
例えば、100社が同程度採用しているとしよう。3000人~5000人だ。
専門的な研究は難しいが、そこまでは必要ないと言う。学ぶのは簡単だと。
逆に言えば、簡単な学習すら現在雇っているエンジニアにさせる気は無いという意味だ。
ここが一番のポイントになる。
つまり、一部の経営者がほしいのは、オペレーターだ。ピペットドクター(ピペット土方)と同じ。
ある道具を上手に使える期間工が欲しいのであって、道具そのものの研究者は要らない。
そして、必要であっても雇っている労働者を習熟させる手間は惜しむ。
それが今後ずっと使えるか解らないから自分達で学習するのはもったいない。
だれでも学べる技術すら自分達の労働者には学習させない。そのコストをかけない。
つまり、新入社員に新しい技術を、アイデアと手数で一斉に形にする。
モノになるのは1つか2つあれば良い。モノにならなければ、切れば良い。
ダメだと思えば撤退する、損害が広がる前に見切ったほうが経営者としては有能だ。
当然その技術を扱う社員は、技術を持たない社員と同じに見える。
例えば、誤差逆伝播法について理解していて欲しいという言い方はしない。
Caffe、Pylearn2、Chainerいずれかのフレームワークが扱えて欲しい、と言う。
ツールが使えて欲しいのだ。CUDAのコーディングが出来る必要もないが、チューニングはして欲しい。
そうすると、ツールが廃れた時、そのツールが使える価値はゼロになる。
技術者の長年の課題ではある(技術の陳腐化は避けがたい)が、それだけを学ぶのは危険すぎる。
基礎を理解していればツールの習熟は早い。ツールだけしか使えなければ乗り換えは困難だ。
使えないより、使えるやつをオレは採る、と。
それはそうだろう。モノにならなきゃ切って当然と思ってるんだから。
興味があったりやってみたいならやれば良い。ただし、基礎を疎かにしてはいけない。
現在のディープラーニングによる画像処理は、言ってみれば特徴量抽出とマッチングだ。
原画像を変換しては特徴量を出し、組み合わせて覚えておいて、正解を探す。
正解を覚えさせる(結果の誤差をなくす)部分に1つアイデアが入ったことで一気に実用化が進んだし、できるとわかってからは研究も盛んにはなった。
機械学習をやってみようと思った時の入り口として、フレームワークは手軽だし良い時代だ。
それがなくなった時にどうするか、だ。