2024/10/11 TextEmbedding から分類器を作りたい
あと VertexAI の TaskType Classification な Embedding 作る意味があるかが知りたい
候補
実装例
RandomForest
NN
いろいろ
この Classification スコアは sklearn の LogisticRegression と KNeighborsClassifier 分類によさそうなデータ
自然な文とそうでないもの、train は 1:6 で自然が多め
MTEB Amazon Massive Scenario
めちゃいい資料
正規化の有無
STS,ClusteringとPairClassificationが顕著な差がないが、ClassificationとRetrievalにおいては明らかに正規化しない⽅がスコア⾼い。
JCoLA うまくいかない
完全に失敗しているやや不均衡でここまでなるか 、あとでアンダーサンプリングしてみる
https://gyazo.com/1358fb0cd653dd86edfc4cbcdd39fd38
文の意味というより係り受けや品詞によるものが大きいかな? とはいえ品詞だけ見ても不自然ではないかも
全部 0 (unacceptable) のデータだけど、別によくね? というのもちらほらある...
https://gyazo.com/9ae69e0157def23cdb6d9472172ccf50
SentenceTransformer の embedding は mean_pooling に attention 加味したもの?
MTEB Amazon Massive Scenario やる
label をカテゴリ ID にする
fit して transform と inverse_transform で相互に変換
pandas で series.astype('category') して series.cat.codes SentenceTransformer("pkshatech/GLuCoSE-base-ja-v2", device='mps') で Apple Silicon でも普通に動くし速い
Keras の SparseCategorical{Accuracy, Crossentropy} と Categorical{Accuracy, Crossentropy} の違いは、整数ラベルか one-hot かの違い [1, 2, 2, 0] or [[0, 1, 0], [0, 0, 1], [0, 0, 1], [1, 0, 0]]
pd.crosstab(df_test["label"], df_test["pred"]) でクロス表の混同行列作れる、いちいち pivot していたわ
validation_loss と loss が結構差開いても test セットの精度は十分高い (chance rate 5.5% に対して accu 89% とか)
Ealry Stopping (patience=3) でこれ、過学習疑うグラフだがそれほど悪くない
train: 0.95 / val: 0.89 / test: 0.89、val ≒ test で汎化能力は一貫している
https://gyazo.com/5de7090e7be4b0e94938739f3b501f95 https://gyazo.com/4e502c9ee1976a718d2935569b4852af