GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 09/14 - #68

Open GENZITSU opened 3 years ago

GENZITSU commented 3 years ago

OPENAIのCodexがホラーすぎる件について

openaiが発表した自動コーディングツールの入出力例。

以下のような入力をすることで...

"""Online 
This is a module of sequential calculation algorithm
for finding moving average, moving standard deviation
and moving variance in constraints.

    Author:  Hideto Manjo
    Date:    Aug 9, 2020
"""

import time
import random
import numpy as np

以下のような出力を得るらしい...

"""Online 
This is a module of sequential calculation algorithm
for finding moving average, moving standard deviation
and moving variance in constraints.

    Author:  Hideto Manjo
    Date:    Aug 9, 2020
"""

import time
import random
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

class Online:
    """Online class
    """

    def __init__(self, n=10):
        """Initialize
        """
        self.n = n
        self.x = np.zeros(n)
        self.mean = 0
        self.var = 0
        self.std = 0

    def update(self, x):
        """Update
        """
        self.x = np.roll(self.x, 1)
        self.x[0] = x
        self.mean = np.mean(self.x)
        self.var = np.var(self.x)
        self.std = np.std(self.x)

    def get_mean(self):
        """Get mean
        """
        return self.mean

    def get_var(self):
        """Get variance
        """
        return self.var

    def get_std(self):
        """Get standard deviation
        """
        return self.std

def main():
    """Main
    """
    n = 10
    x = np.zeros(n)
    mean = 0
    var = 0
    std = 0
    online = Online(n)

    for i in range(n):
        x[i] = random.randint(0, 100)
        online.update(x[i])
        print("x[{}]: {}".format(i, x[i]))
        print("mean: {}".format(online.get_mean()))
        print("var: {}".format(online.get_var()))
        print("std: {}".format(online.get_std()))
        print("")

if __name__ == "__main__":
    main()

コメント

これまじか...
すごいな

出典

元記事

GENZITSU commented 3 years ago

ゲーム制作効率化のためのAIによる画像認識・自然言語処理への取り組み

cygamesのゲーム開発の現場で取り組まれた、制作現場の効率化に機械学習が用いられた事例の紹介。

1. キャラクターの自動タグ付け

SSDを用いてキャラクターの顔領域の検出を実施 タグ付けには既存のたタグ付き画像 + opencvのアニメ顔検出モジュールを使用

スクリーンショット 2021-09-09 0 35 26

学習したモデルの精度

スクリーンショット 2021-09-09 0 36 15

人物以外にも利用

スクリーンショット 2021-09-09 0 36 32

デプロイ時

スクリーンショット 2021-09-09 0 39 39 スクリーンショット 2021-09-09 0 37 19

2. 表記揺れ検出

こちらはルールベースで機能開発

スクリーンショット 2021-09-09 0 41 33

アルゴリズムの紹介

スクリーンショット 2021-09-09 0 43 45

デプロイ

スクリーンショット 2021-09-09 0 45 25

3. 誤字検出機能

自社で誤字検出器をつくることで、外部ツールへのキャッシュアウトを抑止

スクリーンショット 2021-09-09 0 46 23 スクリーンショット 2021-09-09 0 46 36

検出方法

スクリーンショット 2021-09-09 0 46 45 スクリーンショット 2021-09-09 0 47 02 スクリーンショット 2021-09-09 0 47 08 スクリーンショット 2021-09-09 0 47 25

肝心の誤字の検出自体は、各単語ごとのBERTの穴埋め問題を解かせて、尤度(出現順位)を特徴量として機械学習で判定している。

スクリーンショット 2021-09-09 0 56 03 スクリーンショット 2021-09-09 0 56 08 スクリーンショット 2021-09-09 0 56 32 スクリーンショット 2021-09-09 0 56 58

デプロイ

スクリーンショット 2021-09-09 0 48 17

コメント

現場の課題 → 解決策 (これをどう実行するか) → デプロイ
までの全ての工程が詳細に述べられていて、めちゃくち参考になる記事。

出典

元記事

GENZITSU commented 3 years ago

OpenAIが120億パラメータのコード生成AI Codexを発表

codexの評価には、コードの評価用データセットが用いられている。
codexで生成されたコードはなぜかちゃんと動くのだが、こういう背景があったようだ。

CodexはGPT-3言語モデルをベースとしている。GPT-3の0%と比較して、OpenAIの公開されているHumanEvalテストデータセットの問題の70%以上を解決できる。

これはオープンソースのテストデータセットで、モデルのプロンプトと、生成されたコードの有効性を確認するための一連の単体テストで構成される164のプログラミング問題である。 Codexが問題ごとに1つのソリューションを生成したときに、ユニットテストは問題の28.7%に合格した。問題ごとに100のソリューションを生成することを許可された場合に、Codexが少なくとも1つの正しい結果を生成したものは、問題の77.5%に至った。

非常に大量のコードを入れているのだが、注目すべきは「空白」を明示的に扱うようにしたこと。

ームは5,400万の公開GitHubリポジトリからPythonコードファイルを収集し、最終的なデータセットを159GBに絞り込んだ。モデルはGPT-3と同じテキストトークナイザーを使用する。コード内の単語の分布が自然言語と異なるため、研究者はこれが最適ではないことを発見した。さらに、Pythonコードには重要な空白が含まれているため、チームは空白の「実行」を表すトークンの追加セットを導入した。

文章生成系のタスクではbleuのようなファジーマッチでの評価がよく行われるが、OpenAIは正しく動作することを重視
この指標でみてみると、既存のツールでは機能性を持つコードが生成できないことが見て取れる。

OpenAIチームは、評価に機能的正当性を使用することを選んだ。これが人間の開発者がコードを判断する方法であると主張している。 使用される特定のメトリックはpass@kである。これは、モデルがk個のコードサンプルを生成し、いずれかのサンプルが単体テストに合格した場合、モデルは問題を解決したことを意味する。12BパラメータCodexモデルは、k=1で28.8%、k=100で72.31%のスコアを達成した。これに対し、TabNineの最大の無料モデルではそれぞれ2.58%と7.59%、GPT-Jでは11.6%と27.74%である。

コメント

モデル自体は強力なので、やはり評価の方法が大事になってくるようだ。
プログラム生成用にテストケースを作っているのがエンジニアっぽい。
今後テストケースを拡充したり、他言語用のものを用意すれば我々はコーディングから解き放たれるのだろうか...

出典

元記事

GENZITSU commented 3 years ago

テニスのプレー開始点はどう判別する? サーブ検出力に依存しすぎない「CenterNet」「決定木」を使った判別法

試合の分析をするためには、プレーの切れ目を検出する必要があるが、サーブの検出だけでは不十分

スクリーンショット 2021-09-09 22 12 34 スクリーンショット 2021-09-09 22 12 43

というわけで、プレイヤー間の位置関係をもとにした検出を考案

スクリーンショット 2021-09-09 22 14 07 スクリーンショット 2021-09-09 22 14 15

プレイヤー間の位置関係はhomography変換を用いて、算出

スクリーンショット 2021-09-09 22 14 25 スクリーンショット 2021-09-09 22 14 31

結果

サーブの認識は手前プレイヤーは楽だが、奥側のプレイヤーは困難

スクリーンショット 2021-09-09 22 17 10

サーブの認識精度は手前側プレイヤーでも時々ブレる

スクリーンショット 2021-09-09 22 17 38

精度評価スキームに難があるものの、プレイヤー間の座標を加えることで精度が向上

スクリーンショット 2021-09-09 22 17 44

会場からはサーブ前のボールのバウンドも特徴量にいれてみては?という質問が上がっていた。

コメント

おもしろい!
centernet → 後処理 → 決定木 なのでリアルタイムでの処理は厳しいかもしれない。
手前側のプレイヤーの座標は正しく推定できそうだが、奥側のプレイヤーはどうなんだろうか?

出典

元記事

GENZITSU commented 3 years ago

Python Docstring Generator

vscodeのPython用拡張。

関数の定義文を読み取り、自動的にdocstringの雛形を生成してくれる。

スクリーンショット 2021-09-10 22 52 43

スクリーンショット 2021-09-10 22 52 49

スクリーンショット 2021-09-10 22 53 46

コメント

めっちゃ便利

出典

元記事

GENZITSU commented 3 years ago

自然画像の主成分を可視化ツイート

ことの発端: https://twitter.com/yu4u/status/1408416485442154505

というわけで、imagentのデータを用いて主成分 top 100を可視化したのがこちらのツイート。
単純なパターンから複雑なパターンまでが規則正しく並んでおり、興味深い。

実験結果: https://twitter.com/PierreAblin/status/1435356508242550790

コメント

CNNの浅い層が抽象的な図形の抽出に相当する的な話を思い出した。

GENZITSU commented 3 years ago

その AI はグリーンか? AI にもサステナビリティが求められる時代へ

AIの応用先が広がっている一方で、Aiを学習させるためのエネルギーや計算時にしようするエネルギーが肥大していることが問題となっている。

以下のレポートは記憶に新しい。

2019 年にマサチューセッツ大学の研究者は、最先端の自然言語処理アルゴリズムを学習させて人間のようなテキストを作成するのに必要なエネルギーが、アメリカの自動車の生涯排出量の 5 倍に相当する二酸化炭素や、サンフランシスコ・ニューヨーク間の往復航空券 300 回分に相当する二酸化炭素が発生するという成果を発表しました。

スクリーンショット 2021-09-11 23 51 34

この傾向は機械学習のモデルサイズとそれに入力されるデータサイズが単調増加し続けている事が原因。

AI、特に機械学習とディープラーニングのエネルギー消費の上昇 (とそれに伴う CO2 排出量の上昇) は、環境負荷低減の観点から無視できなくなってきています。ディープラーニングの研究に必要とされる計算量は、数カ月ごとに倍増しているとも言われます。これは、モデルの学習に使用するデータセットのサイズが増大し続けていることに起因しています。

というわけでできるだけ効率的なAIを求めるいくつかの取り組みが以下

  • 効率的なアルゴリズムの追求 効率的な学習方法やモデルの探究、はたまたNASの利用など

  • AI チップによる処理実行 AIの推論処理に特化した計算チップによって効率化を行う

  • 再生可能エネルギーによる AI 処理の実行 ここからazureの宣伝 azureのクラウドデータセンターは再生可能エネルギーを使うようにされているらしい。 そして、最も環境負荷の低い地域での計算を実行できるようなAPIが提供されているとのこと。

パブリック クラウドのデータセンターは、可能な限り再生可能エネルギーで電力を賄うように改善がなされています。例えば、Azure は 2012 年の時点ですでに 100% カーボンニュートラルを達成していますが、2025 年までには 100% 再生可能エネルギーで稼働する予定です。したがって、AI 処理にパブリッククラウドを活用することは、そのまま CO2 排出量を削減することに繋がります。

Azure GreenAI Carbon-Intensity API という名称で、最も環境に優しいデータセンターを提案する以下の機能を提供しています。

コメント

後半がazureの宣伝になっててわらった。GPT-2を学習させるのに、自動車5台分のカーボンフィットプリントが発生するという記事は記憶に新しいが、
あれからさらにモデルがでかくなっていることを考えるとゾッとする...

出典

元記事

GENZITSU commented 3 years ago

Kazuhito00 / Skin-Clothes-Hair-Segmentation-using-SMP

顔, 服, 紙を分離するsegmentationモデルがMITライセンスで公開されている。

データセット自体は非公開だが、452枚の画像

自前で撮影した画像やインターネット上から収集した画像を合計452枚使用しています。

実行サンプルは以下。

132933998-eae87d48-a98f-43e1-a31c-983e1dea9c1d

132933990-717324f1-2d74-4060-8b67-0bef06058ebe

コメント

まるで物語シリーズのようだ
使いどころは微妙かもしれないが、GANの生成品質を上げるために関節検出するみたいな話があるので、それ形に使えるかも?

出典

github

GENZITSU commented 3 years ago

huggingface transformersで使える日本語モデルのまとめ

2021/6/21に現在に公開されている日本語用モデルのまとめ

スクリーンショット 2021-09-12 11 23 20

それぞれのモデルがどのように学習されているかやどのトークナイザーが用いられているかな共まとめられているので、とても助かる。

コメント

xlnetとlaboro.aiから公開されているdisiti bert知らなかった。

出典

元記事

GENZITSU commented 3 years ago

1ms 以下のリアルタイムオブジェクト検出/画像処理を目指して Goの配信サーバサイドで通知ぼかしを実装してみたこと

コメント

まだ読みきれてない...

出典

元記事

GENZITSU commented 3 years ago

Yangzhangcst / RGBD-semantic-segmentation

RGBD segmentationの精度表、論文とコードのリンクがまとめられている。

対象範囲は2013年から2021年8月末まで

コメント

メモ

出典

元記事

GENZITSU commented 3 years ago

「あえて精度勝負をしない機械学習」という選択肢

MLシステムを現場のニーズに合わせて導入するには、というテーマのTJOさんのブログ
MLで到達可能な精度がそもそも人間の求めるレベルに達していないという側面もありつつも、精度上はマッチしているが、実装コストやオペレーション的に受け入れられないケースがある。

「実務上のニーズと機械学習の精度とは必ずしもマッチしない」という難しい現実を意味しているように思われます。そこで、今回の記事では「あえて精度勝負をしない機械学習」というテーマのもと、機械学習システムをいかにして現実のニーズに合わせて導入していくかについて論じてみます。

「そもそも機械学習モデルで達成可能な精度の上限が『現場の人間が考える十分かつ高いと感じられる精度』に達していない」 「学術・技術面でベスト」であっても「実務面ではベストとは限らない」アルゴリズムというのはそこかしこにあり

TJO氏が経験した事例

「予測」ではなく「説明(解釈)」をアウトプットとして返す

予測精度ではなく特徴量の寄与度などをアウトプットとして活用してもらう方向

「最適な広告クリエイティブを求めたい」という課題に対して「機械学習で直接予測(生成)する」のではなく、「ヒトがクリエイティブをデザインする参考となる材料を提供する」ことで解決策とする、というものです。

「確信度」の高い予測結果だけを使い、残りは捨てる

推論結果を出すサンプルを絞る方向。 精度が担保できるものだけに絞る。

ACC 0.8だと、ぶっちゃけ間違ったクラスに行ってしまうサンプルの数も馬鹿にならないわけで、それをいちいち人手で修正するのもしんどい話 「予測サンプル全てにクラス分類事後確率をつけて、一定値以上なら採用し、それに満たないものは捨てる」という運用 さらに、その「一定値」の閾値を何通りか用意しておいて、現場担当者の判断で「全部使う」から「信頼できるレベルのものだけ厳選して使う」まで選べるようにすることで、「捨てる」量もコントロールできるようにしたのでした*6。

以上二つに共通する話

「現場の感覚の活用」がキーワードになっていて、それが結果として「合目的性」の面でもacceptableだったので現場で受け入れてもらえたという側面 どちらかというと精度はともかく『使い勝手の良さ』を求める人間臭い現実社会に入っていく」ということであり、その点で「人間臭さと共存できる機械学習」が求められる

コメント

勉強になる。
予測精度ではなく解釈性を売っていくパターンに持っていくのは結構コミュニケーションの仕方に寄り添う。
相手側の業務オペレーションを深く観察して、落とし所を見つける必要がありそう。

出典

元記事

GENZITSU commented 3 years ago

Pythonで不均衡で一貫性のないデータセットを少しだけマシにする話

imbalanced-learnとCleanLabを用いて、データの品質を上げていく方法の事例紹介。

農業では、データの一貫性があまりなく、データを得る事がそもそも困難かつ、失敗データが極端に少ない事が考えられる。

スクリーンショット 2021-09-12 12 51 35

不均衡データ

不均衡データの対策方法の代表的な対策方法の中でも、samplingとensembleに対応しているのが imbalanced-learn

スクリーンショット 2021-09-12 12 52 46

SMOTE を使用する例

スクリーンショット 2021-09-12 12 55 13 スクリーンショット 2021-09-12 12 55 22

一貫性のないデータ

こちらはconfident learningの手法を取り入れたcleanlabを用いている

使い方はとても簡単

スクリーンショット 2021-09-12 12 56 41

サンプルの結果
ラベルの誤分類確率がわかっていると、性能があがる

スクリーンショット 2021-09-12 12 56 49 スクリーンショット 2021-09-12 12 56 55 スクリーンショット 2021-09-12 12 57 01 スクリーンショット 2021-09-12 12 57 08

コメント

cleanlab気になっていたので、新たな事例がしれてよかった。
誤ったラベルが多すぎても、誤分類確率がわかっているとある程度対応できるのに驚いた。

出典

元記事

GENZITSU commented 3 years ago

コード進行認識AIを作るうえで工夫したこと

表題の通り、

スペクトログラムに変換

低音と高音の解像度が同じになるように調整

CQTをC++で実装し、それをpythonに変換して使いました。 その際に低音と高音の解像度が同じになるようにQfactorを調整しました。

スクリーンショット 2021-09-13 23 12 26

オクターブあたりのbin数

1オクターブの分解能を36に設定。

librosaのデフォルト値は12だと思います。1オクターブが12音なので、12は1オクターブあたり1の解像度ということになります。

これ以上大きくしても精度にあまり変化は見られませんでした。

データをコードチェンジ部分ごとに変換

データを保存する際には、必ずコードチェンジの部分で切り取るようにします。 その理由は、適当な場所でデータを切ってしまうと、コードの開始位置ではなく、途中が開始位置になってしまうからです。 ほとんどの場合、コードチェンジの直後に構成音が演奏されます。ベースの場合も同様です。 コードの途中では、ベースの音が動いていたり、構成音が鳴っていなかったりします。

データ拡張

データ拡張のために周波数マスキング、時間マスキングを追加しています。 ピッチシフトをして、学習データを12倍に増やしています。

モデルの出力を構成音とする

コードを予測する際には、いきなりコードを出力するのではなく、コード構成音ベクトルを予測し、それに基づいてコードを予測しています。 コードのデータはかなり不均衡 何百ものコードを予測するよりも、どの音が鳴っているのか、そのベクトルがどんなコードを表しているのかを予測する方が簡単です。

スクリーンショット 2021-09-13 23 15 45

平滑化したコード構成音ベクトル

予測したコード構成音が不自然に途切れないように、平滑化を行う。

コードの遷移確率

コードチェンジの瞬間を予測する

キーの予測

キーがわかっていれば、コード進行のルールや音の関係性のようなものを把握できるかもしれません。そうなることを期待して、キーを予測します。

不均衡データ対策

コード遷移確率や調の損失関数にはfocallossを、コード構成音ベクトルにはfocallossとtverskylossを組み合わせたfocaltverskyを使用しました。

コメント

オリジナルなスペクトログラムの作成、オクターブの分割、不均衡データ対策あたりが鍵っぽく見える。

出典

元記事

GENZITSU commented 3 years ago

道路交通量の調査員廃止へ カメラとAIで常時観測―国交省検討

 国土交通省は、全国の道路交通量調査で、調査員ら人手による観測を廃止する方向で検討に入った。交通監視カメラの映像を人工知能(AI)で解析する手法に転換し、業務の効率化やコスト削減を狙う。将来的には交通量を常時観測できる体制を構築し、渋滞対策などにデータを活用できるようにする。

 データの収集は、調査区間に配置した調査員が走行する車を目視で確認するなどして行っているが、今秋の調査では、国が担当する区間に限り調査員による観測を廃止。AIがカメラ映像から車種などを解析する手法を導入する。

コメント

ですよねぇという感じだが、どこが受注することになるんだろうか?

出典

元記事

GENZITSU commented 3 years ago

LAION-400-MILLION OPEN DATASET

Common Crawlから収集した4億枚の画像に対して、CLIPを用いてテキストと画像のペアの閾値(0.3)を設けた。

All images and texts in the LAION-400M dataset have been filtered with OpenAI‘s CLIP by calculating the cosine similarity between the text and image embeddings and dropping those with a similarity below 0.3 The threshold of 0.3 had been determined through human evaluations and seems to be a good heuristic for estimating semantic image-text-content matching. The image-text-pairs have been extracted from the Common Crawl web data dump and are from random web pages crawled between 2014 and 2021.

画像データには重複が存在するかもしれないとのこと。

There is a certain degree of duplication because we used URL+text as deduplication criteria. The same image with the same caption may sit at different URLs causing duplicates. The same image with different captions is not, however, considered duplicated.

提供されているサンプルを見た感じ閾値0.3は結構妥当そう

スクリーンショット 2021-09-14 22 02 08

ライセンスは商用利用可能なCC-BY 4.0

We are distributing the metadata dataset (the parquet files) under the most open creative common CC-BY 4.0 license. It poses no particular restriction. The images are under their own copyright.

画像の収集方法の詳細も丁寧に書かれている。

コメント

image 2 captionなデータなので、pretrainモデルを作るのは難しいかもしれないが、このデータセットをもとに自己教師あり学習を使ってみるのもありかもしれない。

出典

元記事

GENZITSU commented 3 years ago

AI技術がコモディティ化している」はウソ? 研究者が企業で活躍するためにこれから求められるスキル

ACES社長によれば、AI技術はまだコモディティ化していると言えるほどバリューを出せていない。

、現状AI技術がコモデティ化しているというのは正直誤った見方だと思います。 むしろ、コモデティ化を議論するずっと前のステージにいると見ています。

そもそもAIの価値とは一個一個の知的処理の単価とそのトランザクション数ではかられるものだが、現状のAIは付加価値の高い知的処理がまだできていない。

「現状、産業に対して、AI技術を用いた高付加価値の創出がそもそもできているか?

AIの価値 = 知的処理単価×産業全体でのトランザクション数 で計算されます。そもそも単価が高く、かつトランザクション数が多い知的処理を、ソフトウェアで再現できることにAIの価値があります。

まだまだ解決するべきissueはたくさんある

さらに、コモデティ化されていると言われやすい物体検知などの認識技術も、論文にはなっていないけれども、社会実装におけるissueが様々存在していて、まだまだ研究余地があります。

アカデミア→実プロダクトまでを示した以下のバリューチェーンが、とても勉強になる。

アカデミアの技術を事業へ接続することができる能力は、大変な価値があります。

スクリーンショット 2021-09-14 22 36 36

細かく分けると以下のようなスキルが重要となる。

  1. 研究・論文を取捨選択(場合によっては自ら論文化): 数多くあるAIの技術・論文から、産業で価値を生むアルゴリズムを選択し構造化する付加価値
  2. モジュール化/パッケージ化: モジュール化/パッケージ化することで、再現性を持って、かつ高速に仮説検証を実現する付加価値
  3. データ学習と仮説検証: 業界知見を取り込み、仮説検証を繰り返すことで人の知見を技術でソフトウェアで再現する付加価値
  4. 導入・運用: 「知見」を現場の価値に落とし込み運用する付加価値

このプロセスを回せる・担えるAI研究者/エンジニアは、自身の専門性や技術を社会の価値に落とし込むことができ、人材価値も高いです

コメント

アカデミア→現場導入までのバリューチェーンの図がとても印象的。
自分がどのスキルを売り物にしていくかを考える良い機会になる。 (全部できるのが一番いいけど)

出典

元記事