GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 01/18 - #85

Open GENZITSU opened 2 years ago

GENZITSU commented 2 years ago

Data Leakage in Machine Learning: How it can be detected and minimize the risk

リークがおきる典型例の紹介から、どのようにリークを検出し、リーク発生のリスクを低減させるかがまとめられている記事。

リークとは、モデルをデプロイする際には参照できない情報をもとにモデルの訓練をしてしまうこと。

“When data set contains relevant data, but similar data is not obtainable when the models are used for predictions, data leakage (or leaking) occurs. This results in great success on the training dataset (and possibly even the validation accuracy), but lack of performance in production.”

リークの典型例

  1. webの閲覧中の行動予測に履歴全体からわかる特徴量(総滞在時間など)を使う このようなリークはETL処理などによって生まれる可能性がある
  2. 口座開設予測に、アカウント情報(詳細なプロフィール情報)を使用する このようなリークもモデル訓練時にはデータとしては存在するので起きる可能性がある
  3. 医療診断において、何らかの検査をしていることやIDの文字列などを利用する 何らかの検査をしていること事実やIDに特定の文字列が存在すること、自体がリークになったりする

リークの大別

  1. 学習データへの混入 学習データに本来使ってはいけない未来の情報などが入っているケース

  2. 特徴量への混入 リークに該当する特徴量を駆除したつもりが、別の代理変数があったりするケース

このようなリークは第三者提供のデータにも混入しうるので常に注意する必要がある

リークの検出方法

  1. EDAで各変数と目的変数の相関を見る
  2. モデルのfeature importancesなどを観察する
  3. 推測に際しておかしな挙動をしているサンプルがないか確認する
  4. 限定的な実環境データに対して挙動を確認する

リークのリスクを低減させる方法

  1. データ前処理をCVごとに別々に行わせる
  2. あるtimestampに関する処理を行う際は、それ以降のtimestampレコードを使わない
  3. 検証用にprivate cvを作っておく
  4. ランダムノイズを特徴量に加えてみる
  5. リーク特徴量っぽいものがあれば、それに対してルールベース処理を書いてみる。
  6. 別のデータセットでの学習評価を簡易にできるようにしておく

コメント

大体テーブルデータ用な感じはするが良いまとめ記事

出典

元記事

GENZITSU commented 2 years ago

税関、X線画像から検査対象郵便物をAIで識別するシステムを構築

財務省税関は、X線画像から検査対象の国際郵便物をリアルタイムに識別するAIシステムを構築し、2022年4月に外郵出張所で稼働開始する。検査対象とするかどうかの1次スクリーニングに利用する。AIモデルをNECの「RAPID機械学習」を用いて構築した。定常的に判定精度を監視する機能を備え、取り扱う郵便物の内容が変化しても、AIによる判定精度を維持する

コメント

X線画像に対する物体検出はものにするのが難しいと聞いたが、*参考

1次スクリーニング(おそらく2値分類)とはいえちゃんと物にしているNECのシステムすごいな。

出典

元記事

GENZITSU commented 2 years ago

Introduction to Nameko: A Python Framework for Building Microservices

Namekoというマイクロサービス構築用のpythonフレームワークの紹介記事

AMQPに則ったRPCメッセージングとpub-sub通信が可能で並行性やスケーラビリティ、fault toleranceも考慮されたデザインになっているとのこと

コメント

パフォーマンス要件がシビアなケースだとあまり使用することはなさそうだが、さくっと作りたい時は心強そうである。

出典

元記事

GENZITSU commented 2 years ago

AI画像処理で自動運転車の安全性向上を目指す──SUBARU「EyeSight」の開発最前線

以下のようなところが印象的であった。

Q.ラベリングは自動・手動どちらで行っているのか 大久保:どちらの手法も取り入れています。 齋藤:手動に関しては、コストが安価なオフショアを効果的に活用しています。外注というよりは、パートナーといった位置付けで協業しています

コメント

様々な処理に共通したbackboneを作るというのはある種必然かもしれない。

出典

元記事

GENZITSU commented 2 years ago

EC検索広告枠の精度を、クエリ意図の機械学習で改善した話

適切な広告表示を行うために、クエリと掲載商品の関連度(適合性)を推定する機械学習モデルを構築した事例が綴られている。

適合性判定用のアノテーションデータを作成するのは厳しいのでユーザーのアクションデータを使用。

一般にクエリ意図と適合する商品の方が、適合しない商品よりも、ユーザーアクションは起こりやすいという相関関係があると考えられます。そこで今回は、ユーザーアクションがあった商品は適合している/ユーザーアクションがなかった商品は適合していない、と見なして分類するモデルを組むことにしました。

ユーザーのアクションを推定したいのではなく、適合性を推定したいので、使用特徴量を制限した。

闇雲に商品自体の特徴量を使うと、過度にユーザーアクション予測に最適化されたモデルが学習されます。つまり『クエリと全く合致しないけど、販売実績が良いから適合している商品』と判定するおかしなモデルになってしまう

使える特徴量を全て学習に使用するのではなく、適度に制約を与えることが必要になってきます。今回は商品自体の特徴量はデータから省き、単語一致率のようなクエリと商品の適合性を直接示す特徴量のみを採用しました。

最終的にはクラウドソーシングベースの比較を行っている。

Yahoo!クラウドソーシングを利用して評価を委託しました。 今回は、さまざまな設定で学習したモデルをデプロイした時の検索結果をワーカーに示し、どちらがよりクエリに適した結果を出せているかを、クエリごとに判定してもらいました。

コメント

割と今更感あるテーマな気もするけど、今まで実装されていなかったんだろうか....?

出典

元記事

GENZITSU commented 2 years ago

Textualize/rich

ターミナル上でpring文をいい感じにformatしてくれるライブラリ

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

コメント

あんまり使う機会ない気もするがメモ

出典

元記事

GENZITSU commented 2 years ago

5 Streamlit Components To Build Better Applications

streamlitでアプリケーションを作る際に便利なアドオンが5つ紹介されている。(いずれもpipで入れられる)

1. streamlit_tags

以下の画像のように入力文字列をUIからダイレクトに取得できる

スクリーンショット 2022-01-12 20 51 10

2. streamlit_aggrid

以下のようにDataFrameをインタラクティブに操作できるようになる

画像をうまく貼れないので、リンク先で確認。

3. streamlit-echarts

なんか綺麗な図を表示できるようになる。

スクリーンショット 2022-01-12 20 57 07

4. streamlit-pandas-profiling

文字通り、streamlitでpandas-profilingの結果を表示できるようになる

5. st-annotated-text

streamlit上でNER ラベリングができるようになる。

スクリーンショット 2022-01-12 20 58 25

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

DeepWordMatchモデルを用いてテキストフィーチャのみでCTR予測

入力クエリと広告情報だけを用いてCTRを予測する試みの紹介。

入力クエリのみで予測できることはcokie情報などが今後使えなくなることを睨んでのことみたい。

こんな感じのネットワークを使っている。

arch-1

MS MACROでAUC 0.968, 論文中では実データに対して0.85くらいまで行くみたい。

コメント

メモ

出典

元記事

元論文

GENZITSU commented 2 years ago

機械学習を「社会実装」するということ 2022年版

機械学習プロジェクトの一連のプロセスにおいて、どのような罠が潜んでいるかが丁寧にまとめられている資料。チェックリスト的に使っていきたい。

スクリーンショット 2022-01-13 22 27 44

スクリーンショット 2022-01-13 22 28 32

スクリーンショット 2022-01-13 22 28 44

スクリーンショット 2022-01-13 22 29 21

スクリーンショット 2022-01-13 22 29 32

スクリーンショット 2022-01-13 22 30 16

スクリーンショット 2022-01-13 22 30 35

スクリーンショット 2022-01-13 22 32 08

スクリーンショット 2022-01-13 22 32 17

スクリーンショット 2022-01-13 22 32 39

スクリーンショット 2022-01-13 22 32 57

スクリーンショット 2022-01-13 22 33 10

スクリーンショット 2022-01-13 22 33 19

スクリーンショット 2022-01-13 22 33 37

スクリーンショット 2022-01-13 22 33 46

コメント

素晴らしい資料。

出典

元記事

GENZITSU commented 2 years ago

ノーコードAI開発ツールNode-AIの紹介

NTT Communicationsで内制開発されたNode-AIがどのような課題から生み出されたか、どのような機能を持っているか、その開発体制などが綴られている記事。

課題感の部分共感した

現場担当者や意思決定者が仕組みを深く理解していることが重要になるが、伝えるのが難しい

【壁その1:ステークホルダーの分析内容の相互理解】 課題解決にはステークホルダーとのすり合わせ、特に分析中は精度を上げたり導入判断を行うためのフィードバックが重要になります。この時、データ分析者とステークホルダーは分析内容をしっかり把握することで、より深いフィードバックが可能になります。 一方で、データ分析者の分析の多くはPythonやRなどのプログラミング言語でなされており、専門外であることも多いステークホルダーにとってはその分析自体がブラックボックスとして捉えられてしまいます。この状態では上記で挙げたような精度を上げるための深いフィードバックや、もっと手前の課題設定が正当性の把握などが遅れてしまい、精度が上がるのに時間がかかったり、導入に至らず課題設定からやり直したりするようなことが起きてしまいます。

クライアントへの報告資料作りなどは結構重たいものの、短期間でFBをもらって改善していくサイクルを取る方が効率的

【壁その2:コミュニケーションの重さ】 本来は分析に利用したい稼働の大半を報告書作りに割いてしまうこととなります。 さらに打ち合わせの中では月一参加の意思決定者から課題設定が正当でないことを指摘されてしまったり、現場の運用者から新しい知見が与えられて前処理を追加しなければならない、といったことが起きます。 このようにコミュニケーションの重さからフィードバックの間隔が空いてしまうことにより、最終的な課題解決のための右往左往が増えてしまうことになります。

モデルの信頼性担保や、納品が難しかったりもする

【壁その3:導入の判断と導入自体の難しさ】 導入には意思決定者のGoサインが必要になります。これを判断する際問題になるのが「モデルの信頼性」です。 一方、昨今利用される非線形性を含む複雑なモデルではそのような予測の判断根拠を抽出するのは難しく、さらに抽出したとしても説明自体を解釈するにはより専門的な知識が必要であると言う問題があります このモデルの導入や運用を行う工場のシステム担当者にとっては、作成されたモデルを扱うにはPythonといった言語や機械学習ライブラリ、Webアプリケーションの知識が必要であり、かなりハードルが高いものとなります。したがって、技術的な観点でも現場にモデルを導入していくことは課題があります。

こういう課題感もあり、以下のような機能を作っている

スクリーンショット 2022-01-13 22 54 35

スクリーンショット 2022-01-13 22 54 48

技術スタックや開発体制

スクリーンショット 2022-01-13 22 55 32

スクリーンショット 2022-01-13 22 55 43

コメント

参考になる。

出典

元記事

GENZITSU commented 2 years ago

密生した圃場における一部が隠れた果菜類の主茎の検出 ―写実的なCG画像で学習した深層畳み込みニューラルネットワークによるImage-to-Image変換―

表題の通り。

パナソニックやヤンマーに在籍する著者から日本ロボット工学学会に提出されたもの。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

AgaMiko / waste-datasets-review

結構な分量のゴミにまつわるデータが収集されている。

ただし、各データセットが使えるかはそれぞれLICENSEを確認する必要がある。

スクリーンショット 2022-01-14 16 23 03

一例

スクリーンショット 2022-01-14 16 23 47

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

本番環境での機械学習モデルの監視について (1/2)

本番環境でのモニタリングが必要な理由をケーススタディから論じている記事。

ケーススタディでは顧客の購買予測を行うモデルが本番環境にデプロイしたところ、特徴量として使用していたログイン回数の値がなぜか0になっていたという事象が発生し、予測性能が著しく落ちたことが1ヶ月後になってようやく分かったという例が述べられている。

この原因として以下が挙げられている。

  • 他チームの行った変更に対応できていない 一般的に、機械学習に必要なデータの集計処理はシステムの幅広い範疇に依存し、本番サービスとは独立したサービスになりやすく、本番サービスでの変更に追随できないことも起こりえます。このため、それぞれのシステムの依存関係の管理と、システム変更時の連絡体制の構築が必要になります。

  • データの欠損について気がつけていない データの型として int を用いていた場合、これは妥当な値です。NULL が出現しないかだけではなく、欠損として扱われるデータの件数や割合を監視することも重要です。 欠損以外にもデータの統計量や分布を把握し、監視する必要があります。

  • モデルの異常に気がつくのが遅れた 入力データの監視を行っていればユーザーにキャンペーンを行う前に問題についてわかったはずです。キャンペーンの実行にコストがかかるケースにおいて、キャンペーンの実行前に異常がわかることは非常に大事です。

  • 適用範囲を急拡大し問題が大きくなった いきなり全ユーザーを対象とするのではなく、A/B テストを行う、カナリアリリースを行うといった方法で、影響範囲を小さくできないか検討すべきです。

コメント

購買予測系だと結果の評価が月1になってしまいどうしても発見が遅くなってしまう、また推論結果をもとにしたモニタリングはどうしても遅行指標になってしまうので、先行指標である入力情報を用いるべきということかなと。

出典

元記事

GENZITSU commented 2 years ago

AWSではじめるMLOps

MLOpsの各構成で使用できる、awsの便利なサービスが紹介されているスライド from aws japanの人 @ MLOps勉強会

AWSが用意しているMLOps周りのサービスはかなり多い。SageMaker周りのサービスが多いが、気になったものだけ抽出。

スクリーンショット 2022-01-14 17 27 45

スクリーンショット 2022-01-14 17 30 51

スクリーンショット 2022-01-15 9 49 58 スクリーンショット 2022-01-15 9 50 06 スクリーンショット 2022-01-15 9 50 30 スクリーンショット 2022-01-15 9 50 47 スクリーンショット 2022-01-15 9 51 00 スクリーンショット 2022-01-15 9 51 22 スクリーンショット 2022-01-15 9 52 25 スクリーンショット 2022-01-15 9 52 40 スクリーンショット 2022-01-15 9 53 02

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

テキスト文から画像生成するBigSleep(BigGAN+CLIP)の使い方

big-sleepというOSSを用いることで、テキストから画像を生成する方法を紹介している。

# from http://aiweeklynews.com/archives/56310771.html
from big_sleep import Imagine

dream = Imagine(
    text = "cat and dog in the sky",
    lr = 0.1,
    epochs = 5,
    iterations = 150,
    save_progress = True
)

dream()
スクリーンショット 2022-01-15 21 48 14

コメント

メモ

出典

元記事

github

GENZITSU commented 2 years ago

OSSのアノテーションツール Label Studio を使って、快適にアノテーションする

Label Studioの使い方が紹介されている。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

白黒画像をカラーにしてくれるAPI DeOldify

白黒画像を着色するOSSライブラリの使用方法を紹介する。

実行結果はこんな感じ

スクリーンショット 2022-01-16 10 10 40 スクリーンショット 2022-01-16 10 10 52
colorizer = get_image_colorizer(artistic=False)
image_path = colorizer.plot_transformed_image_from_url(url=source_url, render_factor=35, compare=True, watermarked=False)

コメント

メモ

出典

元記事

{github](https://github.com/jantic/DeOldify)

colab

GENZITSU commented 2 years ago

深層学習を用いたノイズ除去手法についてのサーベイ

深層学習以前のノイズ除去手法BM3Dから、DNNベースのDnCNN, Deep Image Prior, Noise2Noise, Noise2Voidなどををまとめている記事。

BM3D

BM3Dは、画像の非局所領域に対して類似度の高い領域を集めて3次元のブロックを作り、そのブロックに対する直交変換および係数に対するシュリンケージによってノイズを除去します(図1)。これは、自然画像中には類似度の高い領域が複数存在する(自己相似性が高い)というPriorに基づいた手法であるといえます。

スクリーンショット 2022-01-16 10 59 21

DnCNN

DnCNNはノイズを含んだ画像とノイズのないクリーン画像ペアによる教師あり学習で訓練し、BM3Dを超える性能を発揮しました 綺麗な画像を出力するよう学習させるのではなく、画像に含まれるノイズを出力するよう学習させるという工夫によって性能を向上させています DnCNNは特定のノイズレベルのガウシアンノイズに対してだけではなく、ノイズレベルが未知(ブラインドノイズ)の画像に対しても良好な性能を示しました。また、ガウシアンノイズ除去だけでなく、JPEGノイズ除去や超解像といったタスクにも同じ学習方法を用いて当時の最先端の性能を発揮することが示されました。さらに、これら三つのタスクを一つのモデルで学習したとしてもなお最先端の性能を示すなど、ノイズ除去だけにとどまらない汎用的な画像復元手法となっています。

スクリーンショット 2022-01-16 11 08 42

Deep Image Prior

CNNそのものが画像に対するPriorだという主張のもと、ノイズを含む画像一枚のみを用いて学習しノイズ除去を実現するDeep Image Priorとよばれる手法を提案 具体的には、乱数によって生成された画像一枚を入力とし、ノイズを含む画像を教師画像として学習を行います。 CNNがノイズよりも滑らかな成分を学習しやすいことを利用しており、「ノイズ除去後の画像は滑らかである」というPriorに基づいた手法であるとみなせば、CNNは式(2)における正則化項の役割を果たしているといえます。

スクリーンショット 2022-01-16 11 10 53

Noise2Noise

Noise2Noiseロスの最小化によって訓練されたネットワークは、元画像として想定されうる画像セットからなる分布の期待値を復元画像として出力する、という洞察に基づいたものです。 この手法は、ノイズ画像-クリーン画像のペアでの学習と比較して同等かそれを上回る復元性能を発揮しました。 Noise2Noiseのアイデアは、同一シーンを写した独立したノイズを含む二枚以上の劣化画像があるとき、学習の際にクリーン画像が不要となるということを示しています。

著者らは、一例として、長時間露光によって撮影されたノイズのない写真の各画素値は、短時間露光で撮影された独立したノイズを含んだ画像セットの各画素の期待値である、と述べています。短時間露光画像と長時間露光画像のペアを用意するよりも、短時間露光画像を複数枚用意する方が遥かに簡単であるため、本手法は実際のノイズ除去のシチュエーションにおいて実用的なアイデアだといえます。

Noise2Void

Noise2Voidは、ノイズを含む画像一枚からノイズ除去を学習する自己教師あり学習手法として提案されました。 Noise2Voidは、入力画像と教師画像に同一の劣化画像を用います。 具体的には、学習のために切り出されたパッチの中央の画素をマスクし、その周囲の画素値からマスクされた画素値を推定するといったアイデアが提案されています。 Noise2Voidは、各画素が隣接画素と高い相関を持つことと、ノイズが各画素に対して独立に発生しているというPriorを考慮したモデルであるとみなせます。

スクリーンショット 2022-01-16 11 16 48

ブログ著者のコメント

大量のデータセットを用いて画像の性質を学習するよりもむしろ、Priorを適切に設定して少数または一枚の劣化画像から復元を行う復元モデルベースのアプローチに回帰しているように感じます。

コメント

勉強になる

出典

元記事

GENZITSU commented 2 years ago

Pillow-SIMDとaccimageでTorchVisionを速くするときのメモ

ということらしい

torchvisionのバックエンドは、デフォルトでPillowであり、Pillow-SIMDがインストールされているとデフォルトが変更されます。accimageはset_image_backend関数でバックエンドに設定できます。 ちなみに、デフォルトのPillowは最近のCPUだったらPillow-SIMDに乗り換えたほうがいいかもしれません。

なんかかなり違うらしい

  • 通常のPillowの4-6倍程度速いらしいです。
  • AVX2が有効なCPUであると、ImageMagickより16-40倍速いらしいです。

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

Data-Centric Approach vs Model-Centric Approach in Machine Learning

機械学習開発におけるData Centric Approachの解説記事 from neptune.ai

以下の図が特に良い

スクリーンショット 2022-01-17 22 07 15

スクリーンショット 2022-01-17 22 07 22 スクリーンショット 2022-01-17 22 07 34

コメント

新しい内容はそこまでないが、メモ

出典

元記事

GENZITSU commented 2 years ago

DexiNed: Dense EXtreme Inception Network for Edge Detection

CNNでエッジを検出する手法の提案論文

スクリーンショット 2022-01-17 23 24 33

コメント

こいつの必然性はよくわからないがメモ

出典

元論文

github

GENZITSU commented 2 years ago

leondgarse / keras_cv_attention_models

vision transformer系のモデルのkeras実装がまとまっているレポジトリ

スクリーンショット 2022-01-18 22 19 53

コメント

メモ

出典

元記事

GENZITSU commented 2 years ago

[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Transformer:DAT)

vision transformerの画像注意機構を効率化するために、attention計算に用いるピクセルを適応的に変化させることができるようなDeformable Attentionを組み込んだモデルの紹介。

ざっくりとした概要スライドの抜粋

スクリーンショット 2022-01-18 22 46 34

スクリーンショット 2022-01-18 22 46 48

スクリーンショット 2022-01-18 22 46 56

スクリーンショット 2022-01-18 22 47 05

スクリーンショット 2022-01-18 22 47 12

スクリーンショット 2022-01-18 22 47 35

コメント

deformable conv自体知らなかったので勉強になった。

出典

元記事

GENZITSU commented 2 years ago

NVlabs / instant-ngp

めちゃくちゃ早く学習できるNeRFとのこと

Ever wanted to train a NeRF model of a fox in under 5 seconds? Or fly around a scene captured from photos of a factory robot? Of course you have!

コメント

メモ

出典

元記事