AI知らないことリスト
知らない単語
SVM
活性化関数
ドロップアウト
学習中ランダムに元データを入れたり抜いたりすることで過学習を防げる
Encoder/Decoder
次元を減らす→増やすようなプログラム
単純に層を増やすだけでは問題があったため、中間で特徴量を減らすことが複雑性をいい感じに制約してよかったらしい
しかし、いざニューラルネットワークの層を深くして訓練してみると、残念ながら性能が下がってしまった。なぜかというと、2つの問題点があったのだ。
勾配消失(Vanishing gradients):層を増やすにつれて、バックプロパゲーションでは徐々に最初の層に近づくにつれて情報を伝達出来なくなり、学習速度が遅くなっていった。
過学習(Overfitting):機械学習でよくあることだが、訓練データは正しく予測できるが、未知のデータがまったくダメになる。汎化性能が悪く、1つ1つ訓練データの答えを覚えるようになってしまった。層を深くすると、表現能力が高くなったものの、問題を複雑に捉えてしまった。
https://gyazo.com/ac590b9f7aebd27e680e81ccfae8cd0e
yがエンコーダ。xから次元を落としてx'にしてもあまり見た目が変わらなくなるようにyを訓練するらしい。圧縮アルゴリズムという点で本当にcodecというかエンコードしているな
Transformer
Attention、雰囲気でしかわからない
かなりわかりやすい
embedされた各単語のベクトルについてquery, key, valueという3つの値を生成する(これを作るためには行列Wq, Wk, Wvを単語ベクトルにかける)。ある単語の別の単語とのattentionを計算するにはz1=sum(v1*f(q1, k1), v2*f(q1, k2), ...)のようなことをする
Multi-headed attentionについて
上記のq, k, vを何個も作る。結果としてz1も何ペアもできる
それらをいい感じに圧縮する行列Woにかけて次のニューラルネットワーク層に渡すらしい
https://gyazo.com/3474827eea78474aef855df1f22f00a4
各レイヤーが別々の意味構造に着目しているといえる?
positonal embedding
https://gyazo.com/884a003f56198e5259b96836b3416fa3
こうすれば既存の単語ベクトルの次元だけでもフーリエ変換みたいな感じで伝達できるのか。こういうの見てるとなんかコンピュータに対して暗号通信してるみたいだな
Layer normalization/Batch normalization
雰囲気でしかわからないが、まあいい感じにデータを調節するらしい
めちゃくちゃよさそう
なんかあらゆる行列が「いい感じに学習する」としか書いてないんだけど、こんなに大量の行列をいい感じになるように収束させられるもんなのか?
embedding
単語をベクトル空間の中に入れることっぽい。classificationタスクのようにn個の単語を表すのにn次元のベクトルを使うのではなく、少なめの次元で多くの単語を表すことを目指しているみたい。
If you’re familiar with the Bag of Words approach, you’ll know it results in huge, very sparse one-hot encoded vectors, where the dimensionality of the vectors representing each document is equal to the size of the supported vocabulary. Word Embedding aims to create a vector representation with a much lower dimensional space. These are called Word Vectors.
One-hotって単語元からあるんだ
one-hot (ワン・ホット) は、デジタル回路のビット列において、1ビットだけHigh(1)であり、他はLow(0)である状態を指す1。類似のものとして、0が1つだけで、他がすべて1であるようなビット列をone-cold(ワン・コールド)と呼ぶことがある。 そんなベクトル(Word2Vec)どうやって作るの?
In CBOW we have a window around some target word and then consider the words around it (its context). We supply those words as input into our network and then use it to try to predict the target word.
なるほど
これがめちゃんこわかりやすい。
埋め込みベクトルは、モデルのトレーニングの中で学習されます。
そうなんだ
For instance, for the word "soon" the index is 4, and the one-hot vector is [0, 0, 0, 0, 1, 0, 0]. If you multiply this (1, 7) matrix by the (7, 2) embeddings matrix you get the desired two-dimensional embedding, which in this case is [2.2, 1.4].
なるほど、ということはembedding matrixも一緒に学習しているんだね
https://gyazo.com/f8b6603820ab2ba5e33ae4072e118d08
ほぼほぼembedding layerを学習しているといっていいのでは?
lora
追加学習の方法らしい
fine-tuningというのが追加学習のことを指してるっぽい
「狭義の転移学習」とは、訓練済みモデルのネットワークの末端(=出力層)に新しいタスク用の層を追加して、それよりも前にある各層の各パラメーターはフリーズして調整されないようにすることである。この場合、末端の層のみが訓練により調整される。
ファインチューニングでは、(基本的に)訓練済みモデルのネットワークの末端に新しいタスク用の層を追加した上で、訓練済みの一部の層もしくは全部の層の各パラメーターを微調整する。つまり末端の層以外も調整される、という違いがある。
一般的に、(狭義の)転移学習は末端の層の調整だけなのでデータ数は比較的少量でよく、ファインチューニングは末端の層も含めて複数の層を調整する必要があるのでデータ数も比較的大量に必要になる、とされている。
正則化(習った気がするけど思い出せない)
過学習を防ぐための正則化として以下の2つの手法を用いた。
Perplexity
Diffusion
GAN
強化学習
マルコフ連鎖
Q学習
RNN
https://gyazo.com/92535c6407d9073a62f7f27be1193b5c
使い方がよくわからないツール
Huggingface
GPT-4のプラグイン
これは使い方も作り方も知りたい。何を用意すればGPTの言語力を活用できるのか
オープンソースのAIモデルって何を公開しているの?
モデルのアーキテクチャ・学習した重みなどをまとめて、HDF5もしくはSavedModelという形式でエクスポートできるらしい
やりたいこと
存在しないAPIについてGPT-4に推論してもらってエミュレーションできるVR
マウスやキーボードを操作できるAIを使ってUIを評価
もしかしたら操作できる必要はなくて、スクショとかHTMLを見て評価できるだけでもいいかもしれない
良さを評価するだけでなく説明やアドバイスもほしい
チュートリアル
Kerasのテキスト分類
メモ
raw_train_ds: train/以下のうち0.8がけ
raw_val_ds: train/以下のうち0.2がけ
どうやらtrainとvalidationのサブセットを作る際には、validationの割合を指定する(=0.2)のが一般的っぽい
raw_test_ds: test/以下の全部
かなり思い出せた。よかった