GENZITSU / UsefulMaterials

34 stars 0 forks source link

almost weekly useful materials - 12/28 - #122

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

Feature Attributionを使ったモデルモニタリングの開発と実際の機械学習モデルへの適用

モデルの出力に影響を与えた特徴量がどれほど変化したかでモデルのモニタリングを行うFeature Attributionを実際のシステムに適用した事例の紹介

モデルのモニタリングには、入力データの分布を監視する方法や出力を監視する方法などが有名だが、Yahooではそれをもう一歩進化させて入出力の関係を監視する方法を実装

どのようなモデルにも対応可能なKenerlSHAPを用いて特徴量のランキングを行い、いつものランキングとのnDCGを計算することでモデルの監視を実施

スクリーンショット 2022-12-21 14 16 23

スクリーンショット 2022-12-21 14 16 36

コメント

入出力の関係を定量化する方法として勉強になった。

出典

Feature Attributionを使ったモデルモニタリングの開発と実際の機械学習モデルへの適用

GENZITSU commented 1 year ago

ファインチューンせずに高速に学習できる RAPIDS SVR (SVC) の紹介と MARC-ja の評価

サポートベクター回帰(分類)を高速に学習することが可能なRAPIDS SVRの利用方法の紹介記事

SVRは少数データに対しては性能が高い傾向にあるが学習時間がデータ数に応じて指数感的に増えるという弱点があった、これをGPUに最適化させたのがRAPIDS SVRでsklearnの10~50倍ほど高速に動作するらしい

ベンチマークによると、sklearn の10~50倍は速いとか。

実装例は以下。 使い方はほぼsklearnのsvcである。

# from https://secon.dev/entry/2022/12/13/090000-rapids-svr-svc-marc-ja/

from cuml.svm import SVC
import numpy as np

DEFAULT_SVC_PARAMS = {
    "C": 3.0,  # Penalty parameter C of the error term.
    "kernel": "rbf",  # Possible options: ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’.
    "degree": 3,
    "gamma": "scale",  # auto or scale
    "coef0": 0.0,
    "tol": 0.001,  # 0.001 = 1e-3
}

def train_svc(
    X: np.ndarray,
    y: np.ndarray,
    svc_params: dict[str, object] = DEFAULT_SVC_PARAMS,
    probability: bool = True,
) -> SVC:
    svc = SVC(**svc_params)
    svc.probability = probability
    svc.fit(X, y)
    return svc

これをhaggingfaceの事前学習モデルからエンコードした文章特徴量にかけることで、サクッと高性能が出るというから驚きである。

記事中では約6000文章に対する学習が18秒で終わっている

スクリーンショット 2022-12-21 15 02 14

コメント

学習時間が長くて使うのが億劫だったがここまで早ければ試してみたいところ。

出典

ファインチューンせずに高速に学習できる RAPIDS SVR (SVC) の紹介と MARC-ja の評価

GENZITSU commented 1 year ago

利用できるAudio Modelのまとめ

2022年12月5日時点で、pytorchやhagging faceで利用可能な21個の音声モデルをまとめている記事

コメント

まとめ助かる

出典

利用できるAudio Modelのまとめ

GENZITSU commented 1 year ago

競走馬骨格推定 ウマ娘から競馬にドハマリしたデータサイエンティストが競馬×AIの可能性を考える

競走馬の骨格点を推定し、その軌跡から馬の体調を探れないかを調査している記事

Horse10benchmarkというサラブレットの特徴点をアノテーションしたデータセットがあり、これをもとにパドックを歩行する馬の特徴点を検出している

このデータセットには30個体、8,000frame以上のデータが格納されている

分析のイメージ

スクリーンショット 2022-12-21 23 09 46

コメント

馬の骨格推定データとか知らなんだ

出典

競走馬骨格推定 ウマ娘から競馬にドハマリしたデータサイエンティストが競馬×AIの可能性を考える

GENZITSU commented 1 year ago

Plotly.pyによるデータ可視化のすすめ

plotlyでグラフを描画する基本的な方法を解説している記事。

スクリーンショット 2022-12-24 9 21 49

コメント

plotly express ばかり使っていると細かなカスタマイズに困る時があったので助かる

出典

Plotly.pyによるデータ可視化のすすめ

GENZITSU commented 1 year ago

Auto_ViML

AutoVizの作者が作成したAutoMLライブラリ

データの前処理や特徴量選択を行った上で、モデルの学習およびアンサンブルまで実行してくれるのが強みか

以下を実行するだけで、いろいろ出してくれる

# from https://github.com/AutoViML/Auto_ViML

model, features, trainm, testm = Auto_ViML(
    train,
    target,
    test,
    sample_submission,
    hyper_param="GS",
    feature_reduction=True,
    scoring_parameter="weighted-f1",
    KMeans_Featurizer=False,
    Boosting_Flag=False,
    Binning_Flag=False,
    Add_Poly=False,
    Stacking_Flag=False,
    Imbalanced_Flag=False,
    verbose=0,
)

スクリーンショット 2022-12-24 9 36 30

スクリーンショット 2022-12-24 9 36 43

スクリーンショット 2022-12-24 9 37 05

スクリーンショット 2022-12-24 9 37 18

コメント

AutoMLライブラリとえいばpycarretだと思っていたが、前処理と特徴量選択までサポートしているのは結構やりそう。

出典

GENZITSU commented 1 year ago

embetter

自然言語 / 画像の embeddingをsklearn準拠のインターフェースで取り出すことができるライブラリ

encoderにはtimmやsentence-transformer, sense2vecなどが用いられており、最新のモデルのベクトルを取り出すことが可能である。

スクリーンショット 2022-12-24 9 56 39

スクリーンショット 2022-12-24 9 56 45

コメント

便利そう

sense2vecというやつは聞いたことがなかったが、word2vecよりも性能が良いらしいので使ってみたいところ。

出典

embetter

GENZITSU commented 1 year ago

【Feedback3コンペ振り返り】Winning Solution の良さげな手法を試してみた

学生の書いた小論文データの採点結果を予測するコンペの上位陣が採用していた手法を改めて追試し、その効果を試している記事。

最終的なablation結果は下記だが、面白いと思ったテクニックを抜粋していく。

スクリーンショット 2022-12-26 17 54 43

1. 連続する改行 \n\n を特殊トークンに置換

小論文などで話題の転換などを示す際に利用される連続改行を[PARAGRAPH]のような特殊なトークンに変換することでモデルがレイアウトを理解できるようにするテクニック。

[PARAGRAPH]ではなく|などの絶対に使われなさそうな文字にするとモデルへの入力が楽になる

2. 文章の先頭に、各目的変数予測用のトークンを設置し、そのトークンの出力を用いて回帰

今回は採点項目が複数あったので、採点項目ごとに予測トークンを設置することでそれらの相関をモデルに理解させようという試み

以下のようなイメージ

"[CLS] cohesion syntax vocabulary phraseology grammar conventions text [SEP]“

DeBERTa V3

それはまぁめちゃくちゃ強かったとのこと

コメント

こういうテクニックまとめ助かる。

多クラス分類の際は、クラスごとに予測トークンを設置して予測させるというアプローチは汎用的に使えそうである。 (クラス数が多いと入力文章が長くなってそれはそれで大変そうだが)

出典

【Feedback3コンペ振り返り】Winning Solution の良さげな手法を試してみた

GENZITSU commented 1 year ago

Explaining and illustrating orthogonal initialization for recurrent neural networks

重みの固有値が1になるように初期化することで、勾配の発散消失を防ぐ初期化 orthogonal initializationの紹介

スクリーンショット 2022-12-27 9 25 26

コメント

2016年に提案されたもののようだが知らなかった。

出典

Explaining and illustrating orthogonal initialization for recurrent neural networks

GENZITSU commented 1 year ago

ごちきか

NTTコミュニケーションズ イノベーションセンターが公開した時系列データの分析・モデリングのチュートリアル教材

基本的な可視化の方法から前処理、予測モデルの作成までを一通り学ぶことができる。

スクリーンショット 2022-12-27 11 53 25

スクリーンショット 2022-12-27 11 53 31

こちらのブログでは利用している基盤についての紹介もされている。

コメント

良さげなのでメモ。

出典