2024 Reading List: Neural Network

RNN
LightRNN: 今でも賢いらしい

Speech to Text
Nvidiaのモデル。噂ではWhisperより高性能らしい。
WebUIのTTS
MeloTTS: high-quality multi-lingual text-to-speech library by MyShell .ai
WhisperX

状態空間モデル
H3, S4
H3: Hungry Hungry Hippo
S4: Structured State Spaces for Sequence Modeling
Mamba
Mamba: Linear-Time Sequence Modeling with Selective State Spaces
S4をさらにGPUカーネルで書くことでいい感じに高速になった。
詳しい解説
MambaByte
LongManba
MamvaとTransformerの比較解析
日本語の解説
次の記事がよくまとまっていた。
Daisuke Okanohara / 岡野原 大輔 @hillbig
Mamba等の著者であるAlbert Guのインタビュー。インタビュアーもかなり詳しく状態空間モデルについての研究・実装・将来についていろいろと考察。印象に残ったことのメモ
・なぜ従来のRNN、特にLSTMが成功せずSSM、Mambaが成功したか。従来のRNNは非線形を入れすぎており、非線形性は必要最低限にしないと、学習が難しくモデルが制御できない。様々な研究の結果、不必要な部分が慎重に取り除かれてきた。
・今のモデルは表現力がむしろ下がっている。効率の面(Mamba2における遷移行列がスカラ値)もあるが帰納バイアスとしても効果がある可能性はある。
・今のSSMの遷移の制御は何を忘れるか、入力を無視するかどうかということしか制御していない。
・Mamba2の次について( https://arxiv.org/abs/2404.08819 ) についても言及。遷移行列が入力依存となっている部分は満たしているが対角行列ではなくフルの行列にしないとだめ。ただ効率的にできるかはわからない
・RNNの初期状態を変えてモデルをfine tuningするようなアプローチがあるがそういう使い方もありうる(promptのトークンで挙動を変えるのと同じに思う)
・何を状態として見るかという議論に多く時間が割かれていた。学習の場合には層毎に処理し、入力列から出力列への線形変換としか考えず、その場合は状態は存在しない(層としての状態はあるが)。推論の場合にはトークン毎に次に何を覚えておくかが状態となる。学習時に状態を持たず推論時に状態を持つのはTransformerも実は一緒で、Transformerも学習時にはkey, queryはSRAM内でしかないが、推論時はkvキャッシュが状態となりDRAMに持つ
・状態の大きさについて、性能と推論コストのトレードオフがある。Mamba2で、学習コストが状態の大きさに依存しなくなり、状態を大きくできるようになったが推論時に小さくしたいという要望もあるだろうと。https://www.cognitiverevolution.ai/the-state-space-model-revolution-with-albert-gu/

Google NN Tuning Technique
Google AI Brainチームのメンバーがまとめた、テクニックと考慮すること

BitNet
1bit量子化(実際は符号付き2bitで情報量が1.58bit)によりLLMが高速化できる
MSの論文だからおかしなものではないと思うが、反応している界隈がちょっと驚き屋クラスタに近いので審議あり
論文より引用
論文より引用
@goto_yuta_
BitNet b1.58について、真の意味での1bitのBitNetは元から存在していて、今回発表された「BitNet b1.58」はその亜種みたいなもので、元の1bit BitNetが持ってたパラメータに0を追加したことで結果として扱う平均情報量が1.58になって「BitNet b1.58」ということか。
@hillbig
BitNet b1.58はBitNet(https://twitter.com/hillbig/status/1714775165429825828)の重みを2値でなく3値{-1, 0, 1}で持ち学習。3BでPPLと後続タスク性能で元のLLMに匹敵か超える性能を達成。活性値は8bitで持つので行列乗算は効率的なINT8加減算に置き換えられる。
コメント:
推論時の重みは3値でできるが、学習時には学習安定性のため重みやoptimizerの状態は高精度で持つ必要がある。計算の直前で量子化する。
"1.58"の詳細はないが、log 3_2 =1.58 (ternary値のビット数)からきている(←ご指摘ありがとうございます)
重みのうちどのくらいの割合が0なのかは不明。それで計算量も大きく変わる
現在主流の学習後量子化でなく、学習時から量子化awareにする必要がある。
同じパラメータ数で性能で勝った例は初めてであり、3Bまで大規模して初めて上回る。3Bより大きな場合の傾向は不明だが、さらに勝つ可能性はある。BitNetはTransformerのLinear(MLPとProjection)の重みを1bit、活性値は8bitで学習し利用。学習後量子化に比べ高性能を達成。スケール則が成立。量子化前に正規化、学習時の重みや最適化法状態は高精度で保持し(Linearに使うのは量子化後)、学習率を大きくするなど工夫。
BitNetから学ぶ量子化

音声の分散表現
日本語音声 to latent

GNN

Transformerの解釈
tokenに位置を付与した分散表現xとdim q = kで(q_1 .. q_k)の行列があって、vocabのidに対して尤度を計算するのがQKVにおける実装として実際必要な要件で、Wをそれぞれどう学習するか
機械論的解釈可能性

ポジショナルエンコーディング

GNN

KAN
weightを線形結合にいれるのではなく、活性化関数にいれる方法でNNを表現する。

誤差逆伝播/誤差拡散法

Transformer 特にAttentionについての論文

Transformerのモデル解析
@bilzrd
TransformerのFF層は情報を蓄えるkey/valueストアのような役割を果たすことが知られている。本論文ではFF層の重みに対応する情報を人間が解釈可能な表現として取り出す方法を提案し、「具体的にどのような情報が格納されているのか?」という素朴な疑問に答える。
MoEでFF層をスケールさせてるのはこういう背景があるっぽい。
FF層の重みはパターン検出器(Key)とそれに対応する出力の確率分布を表す潜在空間上の表現(Value)のペアに対応している。
浅い層ほど形式的なパターン、深い層ほどsemanticなパターンに対応する。
検出器の個数はd_m(FF層の次元)に対応し、全部で層数xd_m個存在する。例) d_m=4096, 16層の場合は65,536個。

NNのLoss ランドスケープ
RAdam

Hydra (manba + attention)
系列方向に行列を使って情報交換する多くの手法(attention, バタフライ、畳み込み、DFTなど)は、行列が構造を持ち効率的な計算できるか、データ依存で行列が変わるかでまとめられる。Mambaはこの両方の性質を持つ。 この論文ではMambaは逆向きの系列で再度処理した結果を足し双方向に拡張したHydraも提案している。
系列方向で情報交換する操作を行列演算とみなし、行列を解析する取り組みが進んでいる。一般に行列が特別な構造を持ってなければ、行列による線形変換は行列の要素数の計算量(系列長の二乗)がかかってしまうが、バタフライやテプリッツ(畳み込み)、フーリエ変換などが使えるとより小さな計算量できる。この中では、状態空間モデルと接点のあるsemiseparableとよばれる性質が注目されており、系列長に対する線形計算量と優れた後続タスク性能を達成できる。
また、行列がデータ依存で決まる性質は(論文中ではsequence aligmentとよんでいる)重要で多くの既存手法をデータ依存にするだけで性能が大きく改善する。データ依存にすることで注意機構と同じ特性を持ち、In-context learningなどの性質を持てると考えられる。
今回、双方向に情報交換する方法として提案されたHydraは同じパラメータのモデルを逆向き系列に適用する。GLUEタスクや画像認識などで有効である。今回は同じパラメータを共有したモデルで逆向きに処理する方法を提案していた。この場合行列としては上三角が逆方向の結果に対応する。別の順序なども入れても動くと考えられる。

強化学習