GENZITSU / UsefulMaterials

34 stars 0 forks source link

almost weekly useful materials - 12/21 - #121

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

DoWhyとEconMLによる因果推論の実装

Microsoftが開発している因果推論用PythonライブラリDoWhyとEconMLを用いて、どのように因果推論を実装するかを解説したスライド

因果推論そのものについての解説もありとてもわかりやすい。

スライドはこんな感じ

スクリーンショット 2022-12-07 22 58 19

スクリーンショット 2022-12-07 22 58 35

スクリーンショット 2022-12-07 22 58 42

スクリーンショット 2022-12-07 22 58 49

スクリーンショット 2022-12-07 22 59 01

コメント

著者はzennにて因果推論に関する解説記事のシリーズを書かれているのでそちらも参照したい。

出典

DoWhyとEconMLによる因果推論の実装

GENZITSU commented 1 year ago

ChatGPTはどのように学習を行なっているのか

連日界隈を賑わせているChatGPTの学習方法方をその背景から丁寧に説明している記事。

コアとなるのはReinforcement Learning from Human Feedbackというテクニックで、Deep reinforcement learning from human preferencesというopenAIとgoogleの論文で提案されたものである。

その心は現在の状態価値を判断するpredictorを人間のFBによって学習させるというもので、具体的には2つの行動結果パターンを提示しより価値の高い方を人間に選んでもらうというもの。

スクリーンショット 2022-12-07 23 23 53

スクリーンショット 2022-12-07 23 23 19

この方法は評価者のバイアスや評価者をエージェントが騙してしまうリスクもあるが人間が設定した目的関数よりも良い性能を、少ないステップで到達することが可能。

これを大規模言語モデルに応用したのがInstructGPTでTraining language models to follow instructions with human feedbackというopenAPIの論文で提案されたもの。

ここでは以下のように事前に用意した対話データで学習したモデルにいくつかの回答候補生成してもらい、その回答候補を人間が順位付けしたものを元に報酬予測モデルを学習させるというアプローチをとっている。

スクリーンショット 2022-12-07 23 30 38

こうすることで、通常のGPT3よりも性能も高く安全性の高いモデルを作成できるとのこと

スクリーンショット 2022-12-07 23 33 04

これを対話に特化させたのがchatGPTということになる。

chatGPTにはいくつかの改善点が指摘されているが、これも今後改善さえれていくはずである。

コメント

人間のFeedBackを強化学習に取り入れる発想が天才的だし、そっちの方が学習が早く進むというのも驚きである。

出典

GENZITSU commented 1 year ago

Getting started with Pytorch 2.0 and Hugging Face Transformers

Pytorch 2.0に追加された機能 torch.compileを用いてbertの学習が1.2倍ほど高速化するよという紹介記事

huggingfaceではTrainingArgumentstorch_compile=Trueを渡すことで実現できる

Our absoulte training time went down from 696s to 596s. The train_samples_per_second value increased from 43 to 50. The f1 score is the same/slighty better than the training without torch_compile.

コメント

現在はベータ版だが2023年の前半ごろに正式版がでるとのこと。

Pytorchの公式では51%ほどの向上とされていたが、何か学習の方法ちがうのだろうか

スクリーンショット 2022-12-09 22 44 43

出典

GENZITSU commented 1 year ago

Minqi824 / ADBench

NeurIPS2022にて発表されたテーブル・画像・自然言語を含む57種類の異常検知データセットに対して30種類のアルゴリズムの性能を評価した論文の公式レポジトリ

彼らの研究によれば、教師なし学習で常に性能の高い手法はなく、たとえ1%だとしても教師の情報は重要であるというらしい

  • surprisingly none of the benchmarked unsupervised algorithms is statistically better than others, emphasizing the importance of algorithm selection;
  • with merely 1% labeled anomalies, most semi-supervised methods can outperform the best unsupervised method, justifying the importance of supervision;

スクリーンショット 2022-12-15 19 35 39

スクリーンショット 2022-12-15 19 52 09

コメント

MITライセンスなのが嬉しい

出典

GENZITSU commented 1 year ago

写真から施設名や観光名所を識別する、画像認識モデルとシステム紹介(Yahoo!ブラウザーアプリ)

Yahoo アプリに搭載されているスポット検索で利用されている画像認識モデルの作成方法とシステム構成を紹介しているブログ

スポット検索とは

スクリーンショット 2022-12-15 20 12 05

構成

プレフィルター処理、画像の特徴量抽出処理、認識処理の3つで構成

プレフィルター処理は小規模な二値分類モデルを用いてクエリ画像がランドマーク認識向けの画像かどうかを判定                               特徴量抽出は特徴量モデルを用いて画像から512次元の特徴量を抽出 認識処理では、抽出した特徴量をクエリとして、予め作成してある特徴量インデックスを検索し、検索結果のTop-Kから最終的な認識結果を決定

プレフィルター

プレフィルターモデルとして、入力された画像がランドマークかどうかを2値分類するモデルを開発

学習データには、ランドマーク画像としてGoogle Landmarks Dataset v2を抜粋したものと、ランドマークではない画像として内製したデータセットを組み合わせたものを利用

timmのfinetuningにより実装

スクリーンショット 2022-12-15 23 45 34

特徴抽出

モデルの学習にはGoogle Landmarks Dataset v2をベースにクリーニングを実施したデータセットとYahoo!ロコの画像等から構成される内製のランドマークデータセットを利用しています。

モデルtimmのeca_nfnet_l2のpooling層とクラス分類層を外して利用し、CurricularFaceLossを使って学習 (ArcFaceLossよりもよかったとのこと)

スクリーンショット 2022-12-15 23 49 44

CurricularFaceとは

学習初期は簡単なサンプルに重み付けを行い、後半になるにつれて難しいサンプルに適応的に重み付けをしてくロス

スクリーンショット 2022-12-16 0 14 52

検索処理

対象ランドマーク以外のランドマークが同時に写り込んでいる画像 (東京タワー、富士山など)への対応

mage Matchingのモデルを用いて他のランドマークが写り込んでいる可能性が高い画像を除去しています。まず重要度が高いと考えられる国内の有名なランドマークを1,000クラス抽出し、それらに対して人手でインデックスする画像を30枚程度選択

Image MatchingにはkorniaLoFTRを利用しています。比較したいくつかの手法の中で、この用途に関しては、LoFTRが精度、速度の両面で優れていました。

システム構成

NVIDIAのtritron inference serverを利用

ちなみにtritron inference sercerは1つのGPUで複数のモデルを同時に実行できる機能を備えている。

スクリーンショット 2022-12-15 23 52 16

コメント

画像検索システムの作成方法として参考になる。

出典

GENZITSU commented 1 year ago

セッショナイズで機械学習モデルの精度を改善した話

ユーザーのサイト回遊行動をもとにアイテムのベクトル埋め込みを行うitem2vecの精度を、botのアクセス履歴を除外したことでで向上させた事例の紹介

サイト内の人気ブランドとマイナーブランドの類似度が不可解に高かったことから発覚し、マイナーブランドにアクセスしているユーザーの履歴をみると一定間隔で商品を遷移するbotの存在が判明したとのこと

コメント

前処理は大事という良い例だが、気づいたのもすごい

出典

セッショナイズで機械学習モデルの精度を改善した話

GENZITSU commented 1 year ago

Pythonのウェブフレームワークで実行時間のプロファイリングを取得し可視化する

Flaskに標準搭載されているプロファイラーを用いて、各エンドポイントの処理時間のボトルネックを把握する方法を紹介

スクリーンショット 2022-12-19 15 46 32

SNAKEVIZを用いることで、より直感的に可視化することが可能

スクリーンショット 2022-12-19 15 47 59

コメント

flask標準にそんな便利なプロファイラーがあるなんて知らなかった。

出典

Pythonのウェブフレームワークで実行時間のプロファイリングを取得し可視化する

GENZITSU commented 1 year ago

MoTインターン取り組み報告 ~ 標識検出の高速化 ~

道路標識検出パイプラインの高速化のために入力画像を効率的に縮小する方法を模索している記事

入力画像サイズと推論時間の関係

スクリーンショット 2022-12-20 15 08 33

標識の出現確率に沿って切り取り場所を変えてみる

スクリーンショット 2022-12-20 15 09 42

画像を小さくした時の精度劣化が抑えられることを発見

スクリーンショット 2022-12-20 15 10 39

ただし、他の箇所を切り取ってみると精度が逆に下がるという事象に遭遇

スクリーンショット 2022-12-20 15 11 30

スクリーンショット 2022-12-20 15 12 06

標識が持つ色相パターンの領域を抽出して画像を縮小

HSV領域で以下のように抽出し、標識がなさそうな部分をカットする

青:100 ≦ H ≦ 195、90 ≦ S ≦ 255、100 ≦ V ≦ 255 赤:0 ≦ H ≦ 10、64 ≦ S ≦ 255、50 ≦ V ≦ 255

スクリーンショット 2022-12-20 15 13 58

色抽出を行う処理に逆に時間がかかる & 精度自体は低下

スクリーンショット 2022-12-20 15 14 55

アスペクト比を意識した切り取り

Cutmixの要領で一枚の画像から不要な領域を削除し、元のアスペクト比を保つように貼り戻す

スクリーンショット 2022-12-20 15 16 50

精度自体は低下してしまった

スクリーンショット 2022-12-20 15 18 50

コメント

画像サイズの縮小に関してここまで色々アイデアが出せるのがすごい

出典

MoTインターン取り組み報告 ~ 標識検出の高速化 ~

GENZITSU commented 1 year ago

教師なしクラスタリングのその先へ~ 次元削減と定量解析 ~

教師なしクラスタリングによる投手の特徴分析をこれでもかというレベルまで掘り下げている

中でも目を引いたのはあるクラスターのある特徴量の平均値が他のクラスターの平均値とどれくらい異なるかを可視化したvolcano plotという分析手法

スクリーンショット 2022-12-20 16 09 32

そして特徴量の大きさを比較できるように並べた以下のプロット

スクリーンショット 2022-12-20 16 13 49

コメント

行われている分析はそこまで高度なものではないが、ここまでクラスタリングの分析を掘り下げている記事も珍しい

出典

教師なしクラスタリングのその先へ~ 次元削減と定量解析 ~

GENZITSU commented 1 year ago

python-vibrato

Viterbiアルゴリズムに基づいた高速な形態素解析器vibratoのpythonバインディングが公開

作者によるとmecab-python3の1.9倍ほど高速に動作するとのこと

# from https://github.com/daac-tools/python-vibrato

import vibrato

with open('path/to/system.dic', 'rb') as fp:
    dict_data = fp.read()
tokenizer = vibrato.Vibrato(dict_data)

tokens = tokenizer.tokenize('社長は火星猫だ')

len(tokens)
#=> 5

list(tokens)
#=> [Token { surface: "社長", feature: "名詞,一般,*,*,*,*,社長,シャチョウ,シャチョー,," },
#    Token { surface: "は", feature: "助詞,係助詞,*,*,*,*,は,ハ,ワ,," },
#    Token { surface: "火星", feature: "名詞,一般,*,*,*,*,火星,カセイ,カセイ,," },
#    Token { surface: "猫", feature: "名詞,一般,*,*,*,*,猫,ネコ,ネコ,," },
#    Token { surface: "だ", feature: "助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ,," }]

コメント

期待

出典

GENZITSU commented 1 year ago

NLP Tricks Map 2022

クニえもんさんがNLPコンペに頻出するテクニック達を一つに図にまとめたもの

Fi4d0qjVEAAhnhv

初耳だったのは以下

コメント

めちゃ網羅的に整理されていて良い

出典

元ツイート