みなさんこんにちは。私は18歳の個人開発者で、言語モデリングのためにスパイキングニューラルネットワーク(SNN)をいろいろ試しています。たくさんの論文(SpikeBERTのようなもの)では、1B+規模のSNNをランダム初期化から直接学習させるのは、勾配消失のためにうまくいかないと述べられています。そのため通常は、ANN-to-SNN変換や蒸留が行われます。私は、スパイク領域だけで純粋に収束させることができないか試してみたかったんです。財布が文字通り空っぽなので、27kステップで止める必要がありました(笑)けど、損失は4.4まで収束しました。
ここで起きた中で特に面白かったことを挙げます:
- 大幅なスパース性: 約93%のスパース性を維持しています。トークンごとに発火するのは全ニューロンのうち約7%だけです。密なモデルと比べて、推論時のメモリコストが信じられないほど安いです。
- クロスリンガルな創発: 約25Kステップあたりで、データセットの混合に対してそれを明示的にターゲットしたり重み付けしたりしていなかったにもかかわらず、構造的に正しいロシア語の文章をランダムに生成し始めました。
- メモリルーティングの変化: アーキテクチャを600Mを超えて1Bまでスケールさせると、モデルが自発的にアクティベーションルーティングの39%を、永続メモリモジュールへシフトさせました。大規模になるほど、メモリがより価値を持つということを、基本的に自分で学習したようです。
制約(正直に言うと):
文章生成はまだガタガタで、現時点ではGPT-2の流暢さには程遠いです。損失(4.4)が高いのは、主にそれ以上長く学習できなかったためです。でも、1B規模の純粋なSNNがランダム初期化から収束できることを示せたのは、堅いマイルストーンのように感じます。
私はこれを共有しています。なぜなら、厳しめの技術的なフィードバックがぜひほしいからです。
- この場のどなたか、ニューロモーフィック・ハードウェアの経験はありますか? Loihiへの対応は、このようなアーキテクチャならうまくマッピングできそうでしょうか?
- SNNの損失をさらに下げたり、サロゲート勾配をより安定化させるためのコツがあれば、ぜひ教えてください。
コード、アーキテクチャの詳細、そして12GBの学習済みフルチェックポイント(重み+オプティマイザ状態)は、私のGitHubにあります:https://github.com/gtausa197-svg/-Project-Nord-Spiking-Neural-Network-Language-Model.git
[link] [comments]




