SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
10年ぶりの
ニューラルネットワーク
東京エリア・関西合同Debian勉強会
2020/7/18
野首貴嗣
knok@debian.org
発表者について
● 野首貴嗣 (NOKUBI Takatsugu)
○ knok@debian.org
○ OpenPGP id: 99452B4DD28BEEAC8AB5C931B06662EC9C0C1404
■ https://db.debian.org/fetchkey.cgi?fingerprint=99452B4DD28BEEAC8AB5C931B06662EC9C0C1404
○ 学生時代(1995)にニューラルネットを研究室の輪講でやっていた
■ https://twitter.com/knok/status/860501450417360896
■ 第二次人工知能ブーム
● ニューロ&ファジー
2010年3月の勉強会
● 第62回東京エリアDebian勉強会、2010年3月勉強会
○ https://tokyodebian-team.pages.debian.net/2010-03.html
○ 本庄弘典さんによる発表
■ ニューラルネットワークで画像認識してみた
■ https://tokyodebian-team.pages.debian.net/pdf2010/debianmeetingresume201003.pdf
● あれから10年
○ 変化を振り返る
■ 俯瞰的な視点から
○ 個人的な成果をいくつか紹介
● この資料
○ https://bit.ly/2OOcLxH
ニューラルネットのお気持ち
● パーセプトロンを組み合わせる
○ 重みとバイアス
■ 入力と期待する出力とが近づくように重み、バイアスを修正
● 逆誤差伝播
● https://www.sist.ac.jp/~kanakubo/research/neuro.html
○ 複数・多段にすることで柔軟な分離ができる
■ 例: AND/OR, XOR
● XORは1ユニットでは実現できない
■ AND/OR(NAND)ができるならなんでもできるのでは
ブレイクスルー
● 2012年
○ Using large-scale brain simulations for machine learning and A.I. (Google)
■ http://static.googleusercontent.com/media/research.google.com/ja//archive/unsupervised_icml2012.pdf
■ 教師なしで人や猫の特徴を学習した
● いわゆるAutoEncoder
● 16コアを持つマシン169台で学習
画像はブログより
AutoEncoder
● 入力を復元するネットワーク
○ 中間層で次元圧縮された特徴表現が得られる
■ DNNの大半は表現の「低次元ベクトル化」
○ 他の手法
■ 行列の低ランク近似
● 特異値分解 (Singular Value Decomposition: SVD)に基づく
○ cf. 単語分散表現
■ word2vec
● ニューラルネットを利用している
入力画像
出力画像
(再構築)
中間層
ブレイクスルー実現要素(1)
● 計算資源
○ 計算能力の向上
■ 1995:PA-RISC (hp-pa9) 25MHz
● メモリ16MB
■ SIMD命令の充実
■ メモリ量の増大
○ GPGPU
■ 行列演算と相性が良い
● 近年のスパコンもGPUを装備
■ AMD/NVIDIAの競争
■ cuda, cuDNN (NVIDIA)
● NVIDIAの優位性は依然としてある
ブレイクスルー実現要素(2)
● 大規模データセット
○ ImageNet, CIFAR-10, MNIST
○ Google photos, Facebook album等のプラットフォーム
○ MS COCO
○ OpenImages
○ Wikipedia
○ CommonCrawl
● クラウドソーシングフレームワーク
○ Amazon Mechanical Turk
○ Cloudworks
■ アノテーションを依頼できる
ブレイクスルー実現要素(3)
● 課題解決技術
○ 勾配消失/発散問題
■ アクティベーション関数の改善
● ReLU等のramp function
■ 最適化手法の改善
● クリッピング
● Momentumな手法
● RMSProp, AdaGrad, ADAMとその後継
■ 正規化手法の躍進
● Batch Noramlization
● 分散表現(埋め込み表現)の活用
○ いろんなものが数百次元のベクトルとして表現できるように
○ https://www.slideshare.net/naoakiokazaki/20150530-jsai2015
ブレイクスルー実現要素(4)
● データ拡張技術
○ 画像処理方面が顕著
■ アフィン変換、ノイズ付与などやりやすい手法が多い
■ 自然言語処理はちょっと難しい
● 辞書ベースなど
● ラベルを必要としない学習
○ word2vec, GloVe等
○ 一部をマスク、入れ替え等
■ そこからただしいものを再構築できるよう学習させる
● 表現学習 (representation learning)
● 敵対的生成ネットワーク (GAN)
○ 本物と生成されたものの区別をつける /欺く
環境面
● データサイエンティストブーム
○ 2000年代 - 統計的手法
■ 多変量解析
■ トピックモデル
■ Support Vector Machine (SVM)
○ 2010年代 - 深層学習
■ MOOCsの充実
● Andrew Ng先生の無料講座(日本語字幕あり)
○ 今でも有用なコンテンツ
■ コンペティションの隆盛
● Kaggle, SIGNATE等
● 実行環境の充実
○ Google Colaboratory (無料でGPU/TPUが利用可能, 時間制限あり)
もたらされた変化(1)
● 人を超える精度/能力
○ 画像認識
○ 機械読解
○ AlphaGo等
● 生成モデル
○ 有名どころ: DeepFake, GPT-2, 3
○ 画像復元(inpainting)
○ 人間の創作活動のアシスト
■ 画像カラー化
■ 自動着色 petalica paint
■ GauGAN
○ 自然な音声合成
○ 音楽生成 Magenta等
■ Infinite death metal
スライド 画像認識と深層学習 より
もたらされた変化(2)
● 流ちょうな自然言語生成
○ 機械翻訳・文章生成
■ フェイクニュース生成の危惧がなされた
● 識別モデルも提供
● 単語・品詞を意識しなくてもなんとかなる
○ SentencePiece
■ 語彙爆発の苦肉の策
■ End-to-End学習のおかげで品詞情報がなくても処理できる
● 低位層に品詞に相当する情報を暗に学習しているらしい
○ Unicodeバイトレベルの分解
■ カバーできる言語が広がる
■ ただしくないバイト列を生成する問題もある
● https://transformer.huggingface.co/doc/gpt2-large
新たな課題(1)
● 翻訳ミス
○ 訳抜け
■ 統計ベースの機械翻訳と違い対応付けが不明瞭
■ 流ちょうなので見逃しやすい
○ 逆の意味の訳文を出してしまう
■ 反対語は全体的にみると出現のしやすさが近い
○ 同じ文言を繰り返し生成
■ たまに発生
● https://www.slideshare.net/ToshiakiNakazawa/nlp2017-nmt-tutorial/79
● Google翻訳, DeepLでも散見
● 消費電力増大
○ 訓練をCPUでがんばるアプローチ
■ https://github.com/keroro824/HashingDeepLearning
新たな課題(2)
● データセットとバイアス
○ 実世界のデータにはバイアスがある
○ 考慮なしに利用すると機械学習モデルにもバイアスが反映
○ 公平性(fairness)の担保が課題
● セキュリティ
○ 敵対的サンプル
■ 人の目には自然だが識別モデルは間違う画像 /文章
● https://speakerdeck.com/settenqb/ji-jie-xue-xi-tosekiyuritei
● https://twitter.com/Bleu_kakeru727/status/937680760491753473
○ モデル剽窃
○ データセットへの毒入れ (バックドア)
■ クラウドワーカーの信頼性
フレームワーク開発
● 古参 (deb有り)
○ Torch7
○ Caffe
○ Theano
● 新しいもの (いくつかはdeb有り) - Pythonが主流に
○ Chainer (2015~, 現在はメンテナンスモード )
■ cupy, ChainerX
■ PyTorch
○ TensorFlow (2015~)
○ Keras
○ Darknet
(個人的に仕事として始めたのも 2015)
関係の強そうなDebian内チーム
● Blends
○ debian-science
■ さらに細かいメタパッケージ多数
○ debian-med
■ https://salsa.debian.org/med-team/
■ COVID-19ハッカソンを実施
● deeplearning team
○ https://salsa.debian.org/deeplearning-team
Web/JavaScriptのランタイム
● WebDNN
○ https://mil-tokyo.github.io/webdnn/ja/
■ 日本発
● WebAssenbly, WebGL等に対応
■ 現在開発はinactive
● 対応フレームワークのバージョンが古い
● TensorFlow.js
○ https://www.tensorflow.org/js
■ 訓練もサポート
■ 多くの訓練済みモデルを配布
● https://github.com/tensorflow/tfjs-models
● ONNX.js
○ https://github.com/microsoft/onnxjs
API利用者観点
● TensorFlowは特に利用が簡単
○ 事前訓練済みモデルを配布
■ tensorflow-hub
■ tfjs-models
○ well-documented
■ 日本語翻訳も充実しつつある
○ 入力(連続値、画像等)に対して出力を得られる
■ 分類モデル: 分類結果(ラベル)
■ 物体検知: Boundary boxとラベル
■ 回帰モデル: 予測値等
● 自然言語処理
○ HuggingFace Transformers
○ AllenNLP (研究者向け寄り)
個人的に作ったものの紹介
WebDNNで作ったもの
● edges2cats (pix2pix, chainer)
○ http://pix2pix.daio.net/
○ ソース: https://github.com/knok/chainer-pix2pix
● Wasserstein AutoEncoder (chainer)
○ ht//wae-friends.daio.net
○ ソース: https://github.com/knok/chainer-wae
● データセット収集と訓練から再現可能
TensorFlow.jsを使ったもの
● バーチャル背景 (virtbg)
○ https://knok.github.io/virtbg/
○ ソース: https://github.com/knok/virtbg
■ 訓練済みのBodyPixモデルを使用
■ https://github.com/tensorflow/tfjs-models/tree/master/body-pix
● VRM Three.js PoseNet Sample
○ https://knok.github.io/vrm-three-posenet/
■ ソース: https://github.com/knok/vrm-three-posenet
● https://github.com/t-takasaka/vrm-three-posenet のfork
● 最近のtfjs-modelsにAPIを合わせた
● 再配布可能なモデルに差し替え
● 訓練済みのPoseNetモデルを使用
○ https://github.com/tensorflow/tfjs-models/tree/master/posenet
Google colaboratoryを使ったもの
● StyleGan
○ https://colab.research.google.com/drive/1PhO9IUbqGPeJhubNj0YVAlRXsOYEA1Xr
○ disentangle
● HuggingFace ALBERT regression
○ https://colab.research.google.com/drive/1XXmqh_uwV-BCh3FPl4OqDPhMlHRalDKL
○ BERT亜種による回帰
データセット
● pixbay-cat-images
○ https://github.com/knok/pixabay-cat-images
○ Pixbayの猫画像リンク
■ edges2catsのデータセットに利用
● instagram-food-images
○ https://github.com/knok/instagram-food-images
○ Instagramから餃子、ハンバーガー、ホットドッグ、サンドウィッチ、シュウマイを収集
● make-meidai-dialogue
○ https://github.com/knok/make-meidai-dialogue
○ 日本語自然会話書き起こしコーパス(旧名大会話コーパス)の変換スクリプト
● データ本体は別のライセンスであることが多い
tfjs-modelsの残念な点
● 訓練用コードが公開されていない
● 訓練データも公開されていない
○ 策定中のDeepLearning Policyに適合しない可能性大
■ https://lists.debian.org/debian-science/2019/06/msg00000.html
■ https://salsa.debian.org/deeplearning-team/ml-policy
■ 再現性を求める方向で進んでいる
● TensorFlow.js以外での動作を想定していない
○ 一応変換ツールはある
■ https://github.com/patlevin/tfjs-to-tf
他にできそうなこと(1)
● ハンドトラッキング
○ Leap Motion/Kinectの代替
■ deepな手法である必要性はない
● VTuberアプリ
○ VRM+PoseNetで既にある程度いけそう
■ BodyPixは顔パーツ認識も可能
● 表情への反映もできる
● FaceMesh
■ 先行実装: FaceVTuber ref: https://vrm.dev/vrm_applications/
○ 声質変換?
■ Yukariライブラリ
● https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a
■ 速度に課題
● GPU必須
他にできそうなこと(2)
● 自然言語処理
○ ブラウザと Tensorflow.js を使った BERT の活用方法を考える (Google blog)
■ https://developers-jp.googleblog.com/2020/04/tensorflowjs-bert.html
■ https://github.com/tensorflow/tfjs-models/tree/master/qna
● MobileBERTを用いたQ&A
● 現状日本語は使えない
○ 日本語のQ&Aで訓練していない
■ SQuAD 1.1に基づく(らしい)
■ https://www.slideshare.net/ShionHonda/bertmobileberttensorflowjs
○ 語彙自体は含まれている
○ 訓練データを用意し、 fine tuningすれば使えるはず
■ TensorFlow Liteモデルもある
■ 簡単な分類ぐらいなら割とすぐできそう
速度面の課題
● 画像は補完技術が充実
○ 音声、自然言語への適用は困難
○ 生成に必要なデータが巨大、計算量も多い
■ GPUでリアルタイムにできるようになってきた
● WaveNet(2016)では1秒の音声生成に1分程度かかっていた
● 量子化
○ 浮動小数点計算を整数やバイナリで近似する技術
■ すべての演算を置き換えることが常に可能とは限らない
○ tfjs-modelsは多くをサポート
■ 精度を犠牲にしていることに留意
● DNNモデルの推論はシングルコア駆動(多分)
○ TensorFlowネイティブランタイムならマルチコア駆動
コンピューティングのトレンド
● 歴史は繰り返す
○ 中央集権型 vs 分散型
■ 「ダウンサイジング」
● Thin Clinet
■ エッジAI
● DNNモデルを軽量化
● 組み込み機器で動作させる
● cf. AIスピーカー
○ 処理の大半はクラウド側
○ 温故知新
■ LSTM, CNNも20世紀に考案されたもの
○ 次のトレンドは?
■ ニューラルネットのように昔のトレンドが復活する可能性
まとめ
● 10年でディープニューラルネットワークが飛躍的な進化
○ 計算資源とデータセット
○ 第三次AIブーム
■ そろそろ終焉?
● 使うだけならお手軽
○ 多くのフレームワークと訓練済みモデル
○ ブラウザでも動作
■ Webカムとの組み合わせ
● DFSG的にはどうか?
○ 再配布不可・商用利用不可のデータセット、訓練済みモデルも多い
■ 研究目的のみ可というものも多い
○ 個人的には再現可能なレベルを心がけている
■ 元データのライセンスに課題
NN以外のトピック
● 統計ベース
○ ベイジアンフィルター
■ A Plan For Spam (by Paul Graham, 2002)
● bogofilter, spamassassin等
● Support Vector Machine (SVM)
● 決定木(Decision Tree)ベース
○ XGBoost
○ LightGBM
○ CatBoost

Más contenido relacionado

La actualidad más candente (9)

OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
 
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
LibPGEN 1st Step Guide
LibPGEN 1st Step GuideLibPGEN 1st Step Guide
LibPGEN 1st Step Guide
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
 
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 

Similar a 10年ぶりの ニューラルネットワーク

今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
 
20131212 Okinawa OpenDays OpenStack
20131212 Okinawa OpenDays OpenStack20131212 Okinawa OpenDays OpenStack
20131212 Okinawa OpenDays OpenStack
Akihiro Motoki
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
Kouhei Maeda
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

Similar a 10年ぶりの ニューラルネットワーク (20)

今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
20131212 Okinawa OpenDays OpenStack
20131212 Okinawa OpenDays OpenStack20131212 Okinawa OpenDays OpenStack
20131212 Okinawa OpenDays OpenStack
 
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
 
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
 
8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
 
【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
 
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみたクラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
 
DockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JPDockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JP
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TripleO Deep Dive 1.1
TripleO Deep Dive 1.1TripleO Deep Dive 1.1
TripleO Deep Dive 1.1
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 

Más de Takatsugu Nokubi (6)

AIと金融
AIと金融AIと金融
AIと金融
 
Text gen-and-gpt2
Text gen-and-gpt2Text gen-and-gpt2
Text gen-and-gpt2
 
qemu-debootstrap
qemu-debootstrapqemu-debootstrap
qemu-debootstrap
 
Language toolを使ってみる
Language toolを使ってみるLanguage toolを使ってみる
Language toolを使ってみる
 
自由ソフトウェアによるライブストリーミング
自由ソフトウェアによるライブストリーミング自由ソフトウェアによるライブストリーミング
自由ソフトウェアによるライブストリーミング
 
自由なデータ
自由なデータ自由なデータ
自由なデータ
 

Último

Último (12)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

10年ぶりの ニューラルネットワーク

  • 2. 発表者について ● 野首貴嗣 (NOKUBI Takatsugu) ○ knok@debian.org ○ OpenPGP id: 99452B4DD28BEEAC8AB5C931B06662EC9C0C1404 ■ https://db.debian.org/fetchkey.cgi?fingerprint=99452B4DD28BEEAC8AB5C931B06662EC9C0C1404 ○ 学生時代(1995)にニューラルネットを研究室の輪講でやっていた ■ https://twitter.com/knok/status/860501450417360896 ■ 第二次人工知能ブーム ● ニューロ&ファジー
  • 3. 2010年3月の勉強会 ● 第62回東京エリアDebian勉強会、2010年3月勉強会 ○ https://tokyodebian-team.pages.debian.net/2010-03.html ○ 本庄弘典さんによる発表 ■ ニューラルネットワークで画像認識してみた ■ https://tokyodebian-team.pages.debian.net/pdf2010/debianmeetingresume201003.pdf ● あれから10年 ○ 変化を振り返る ■ 俯瞰的な視点から ○ 個人的な成果をいくつか紹介 ● この資料 ○ https://bit.ly/2OOcLxH
  • 4. ニューラルネットのお気持ち ● パーセプトロンを組み合わせる ○ 重みとバイアス ■ 入力と期待する出力とが近づくように重み、バイアスを修正 ● 逆誤差伝播 ● https://www.sist.ac.jp/~kanakubo/research/neuro.html ○ 複数・多段にすることで柔軟な分離ができる ■ 例: AND/OR, XOR ● XORは1ユニットでは実現できない ■ AND/OR(NAND)ができるならなんでもできるのでは
  • 5. ブレイクスルー ● 2012年 ○ Using large-scale brain simulations for machine learning and A.I. (Google) ■ http://static.googleusercontent.com/media/research.google.com/ja//archive/unsupervised_icml2012.pdf ■ 教師なしで人や猫の特徴を学習した ● いわゆるAutoEncoder ● 16コアを持つマシン169台で学習 画像はブログより
  • 6. AutoEncoder ● 入力を復元するネットワーク ○ 中間層で次元圧縮された特徴表現が得られる ■ DNNの大半は表現の「低次元ベクトル化」 ○ 他の手法 ■ 行列の低ランク近似 ● 特異値分解 (Singular Value Decomposition: SVD)に基づく ○ cf. 単語分散表現 ■ word2vec ● ニューラルネットを利用している 入力画像 出力画像 (再構築) 中間層
  • 7. ブレイクスルー実現要素(1) ● 計算資源 ○ 計算能力の向上 ■ 1995:PA-RISC (hp-pa9) 25MHz ● メモリ16MB ■ SIMD命令の充実 ■ メモリ量の増大 ○ GPGPU ■ 行列演算と相性が良い ● 近年のスパコンもGPUを装備 ■ AMD/NVIDIAの競争 ■ cuda, cuDNN (NVIDIA) ● NVIDIAの優位性は依然としてある
  • 8. ブレイクスルー実現要素(2) ● 大規模データセット ○ ImageNet, CIFAR-10, MNIST ○ Google photos, Facebook album等のプラットフォーム ○ MS COCO ○ OpenImages ○ Wikipedia ○ CommonCrawl ● クラウドソーシングフレームワーク ○ Amazon Mechanical Turk ○ Cloudworks ■ アノテーションを依頼できる
  • 9. ブレイクスルー実現要素(3) ● 課題解決技術 ○ 勾配消失/発散問題 ■ アクティベーション関数の改善 ● ReLU等のramp function ■ 最適化手法の改善 ● クリッピング ● Momentumな手法 ● RMSProp, AdaGrad, ADAMとその後継 ■ 正規化手法の躍進 ● Batch Noramlization ● 分散表現(埋め込み表現)の活用 ○ いろんなものが数百次元のベクトルとして表現できるように ○ https://www.slideshare.net/naoakiokazaki/20150530-jsai2015
  • 10. ブレイクスルー実現要素(4) ● データ拡張技術 ○ 画像処理方面が顕著 ■ アフィン変換、ノイズ付与などやりやすい手法が多い ■ 自然言語処理はちょっと難しい ● 辞書ベースなど ● ラベルを必要としない学習 ○ word2vec, GloVe等 ○ 一部をマスク、入れ替え等 ■ そこからただしいものを再構築できるよう学習させる ● 表現学習 (representation learning) ● 敵対的生成ネットワーク (GAN) ○ 本物と生成されたものの区別をつける /欺く
  • 11. 環境面 ● データサイエンティストブーム ○ 2000年代 - 統計的手法 ■ 多変量解析 ■ トピックモデル ■ Support Vector Machine (SVM) ○ 2010年代 - 深層学習 ■ MOOCsの充実 ● Andrew Ng先生の無料講座(日本語字幕あり) ○ 今でも有用なコンテンツ ■ コンペティションの隆盛 ● Kaggle, SIGNATE等 ● 実行環境の充実 ○ Google Colaboratory (無料でGPU/TPUが利用可能, 時間制限あり)
  • 12. もたらされた変化(1) ● 人を超える精度/能力 ○ 画像認識 ○ 機械読解 ○ AlphaGo等 ● 生成モデル ○ 有名どころ: DeepFake, GPT-2, 3 ○ 画像復元(inpainting) ○ 人間の創作活動のアシスト ■ 画像カラー化 ■ 自動着色 petalica paint ■ GauGAN ○ 自然な音声合成 ○ 音楽生成 Magenta等 ■ Infinite death metal スライド 画像認識と深層学習 より
  • 13. もたらされた変化(2) ● 流ちょうな自然言語生成 ○ 機械翻訳・文章生成 ■ フェイクニュース生成の危惧がなされた ● 識別モデルも提供 ● 単語・品詞を意識しなくてもなんとかなる ○ SentencePiece ■ 語彙爆発の苦肉の策 ■ End-to-End学習のおかげで品詞情報がなくても処理できる ● 低位層に品詞に相当する情報を暗に学習しているらしい ○ Unicodeバイトレベルの分解 ■ カバーできる言語が広がる ■ ただしくないバイト列を生成する問題もある ● https://transformer.huggingface.co/doc/gpt2-large
  • 14. 新たな課題(1) ● 翻訳ミス ○ 訳抜け ■ 統計ベースの機械翻訳と違い対応付けが不明瞭 ■ 流ちょうなので見逃しやすい ○ 逆の意味の訳文を出してしまう ■ 反対語は全体的にみると出現のしやすさが近い ○ 同じ文言を繰り返し生成 ■ たまに発生 ● https://www.slideshare.net/ToshiakiNakazawa/nlp2017-nmt-tutorial/79 ● Google翻訳, DeepLでも散見 ● 消費電力増大 ○ 訓練をCPUでがんばるアプローチ ■ https://github.com/keroro824/HashingDeepLearning
  • 15. 新たな課題(2) ● データセットとバイアス ○ 実世界のデータにはバイアスがある ○ 考慮なしに利用すると機械学習モデルにもバイアスが反映 ○ 公平性(fairness)の担保が課題 ● セキュリティ ○ 敵対的サンプル ■ 人の目には自然だが識別モデルは間違う画像 /文章 ● https://speakerdeck.com/settenqb/ji-jie-xue-xi-tosekiyuritei ● https://twitter.com/Bleu_kakeru727/status/937680760491753473 ○ モデル剽窃 ○ データセットへの毒入れ (バックドア) ■ クラウドワーカーの信頼性
  • 16. フレームワーク開発 ● 古参 (deb有り) ○ Torch7 ○ Caffe ○ Theano ● 新しいもの (いくつかはdeb有り) - Pythonが主流に ○ Chainer (2015~, 現在はメンテナンスモード ) ■ cupy, ChainerX ■ PyTorch ○ TensorFlow (2015~) ○ Keras ○ Darknet (個人的に仕事として始めたのも 2015)
  • 17. 関係の強そうなDebian内チーム ● Blends ○ debian-science ■ さらに細かいメタパッケージ多数 ○ debian-med ■ https://salsa.debian.org/med-team/ ■ COVID-19ハッカソンを実施 ● deeplearning team ○ https://salsa.debian.org/deeplearning-team
  • 18. Web/JavaScriptのランタイム ● WebDNN ○ https://mil-tokyo.github.io/webdnn/ja/ ■ 日本発 ● WebAssenbly, WebGL等に対応 ■ 現在開発はinactive ● 対応フレームワークのバージョンが古い ● TensorFlow.js ○ https://www.tensorflow.org/js ■ 訓練もサポート ■ 多くの訓練済みモデルを配布 ● https://github.com/tensorflow/tfjs-models ● ONNX.js ○ https://github.com/microsoft/onnxjs
  • 19. API利用者観点 ● TensorFlowは特に利用が簡単 ○ 事前訓練済みモデルを配布 ■ tensorflow-hub ■ tfjs-models ○ well-documented ■ 日本語翻訳も充実しつつある ○ 入力(連続値、画像等)に対して出力を得られる ■ 分類モデル: 分類結果(ラベル) ■ 物体検知: Boundary boxとラベル ■ 回帰モデル: 予測値等 ● 自然言語処理 ○ HuggingFace Transformers ○ AllenNLP (研究者向け寄り)
  • 21. WebDNNで作ったもの ● edges2cats (pix2pix, chainer) ○ http://pix2pix.daio.net/ ○ ソース: https://github.com/knok/chainer-pix2pix ● Wasserstein AutoEncoder (chainer) ○ ht//wae-friends.daio.net ○ ソース: https://github.com/knok/chainer-wae ● データセット収集と訓練から再現可能
  • 22. TensorFlow.jsを使ったもの ● バーチャル背景 (virtbg) ○ https://knok.github.io/virtbg/ ○ ソース: https://github.com/knok/virtbg ■ 訓練済みのBodyPixモデルを使用 ■ https://github.com/tensorflow/tfjs-models/tree/master/body-pix ● VRM Three.js PoseNet Sample ○ https://knok.github.io/vrm-three-posenet/ ■ ソース: https://github.com/knok/vrm-three-posenet ● https://github.com/t-takasaka/vrm-three-posenet のfork ● 最近のtfjs-modelsにAPIを合わせた ● 再配布可能なモデルに差し替え ● 訓練済みのPoseNetモデルを使用 ○ https://github.com/tensorflow/tfjs-models/tree/master/posenet
  • 23. Google colaboratoryを使ったもの ● StyleGan ○ https://colab.research.google.com/drive/1PhO9IUbqGPeJhubNj0YVAlRXsOYEA1Xr ○ disentangle ● HuggingFace ALBERT regression ○ https://colab.research.google.com/drive/1XXmqh_uwV-BCh3FPl4OqDPhMlHRalDKL ○ BERT亜種による回帰
  • 24. データセット ● pixbay-cat-images ○ https://github.com/knok/pixabay-cat-images ○ Pixbayの猫画像リンク ■ edges2catsのデータセットに利用 ● instagram-food-images ○ https://github.com/knok/instagram-food-images ○ Instagramから餃子、ハンバーガー、ホットドッグ、サンドウィッチ、シュウマイを収集 ● make-meidai-dialogue ○ https://github.com/knok/make-meidai-dialogue ○ 日本語自然会話書き起こしコーパス(旧名大会話コーパス)の変換スクリプト ● データ本体は別のライセンスであることが多い
  • 25. tfjs-modelsの残念な点 ● 訓練用コードが公開されていない ● 訓練データも公開されていない ○ 策定中のDeepLearning Policyに適合しない可能性大 ■ https://lists.debian.org/debian-science/2019/06/msg00000.html ■ https://salsa.debian.org/deeplearning-team/ml-policy ■ 再現性を求める方向で進んでいる ● TensorFlow.js以外での動作を想定していない ○ 一応変換ツールはある ■ https://github.com/patlevin/tfjs-to-tf
  • 26. 他にできそうなこと(1) ● ハンドトラッキング ○ Leap Motion/Kinectの代替 ■ deepな手法である必要性はない ● VTuberアプリ ○ VRM+PoseNetで既にある程度いけそう ■ BodyPixは顔パーツ認識も可能 ● 表情への反映もできる ● FaceMesh ■ 先行実装: FaceVTuber ref: https://vrm.dev/vrm_applications/ ○ 声質変換? ■ Yukariライブラリ ● https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a ■ 速度に課題 ● GPU必須
  • 27. 他にできそうなこと(2) ● 自然言語処理 ○ ブラウザと Tensorflow.js を使った BERT の活用方法を考える (Google blog) ■ https://developers-jp.googleblog.com/2020/04/tensorflowjs-bert.html ■ https://github.com/tensorflow/tfjs-models/tree/master/qna ● MobileBERTを用いたQ&A ● 現状日本語は使えない ○ 日本語のQ&Aで訓練していない ■ SQuAD 1.1に基づく(らしい) ■ https://www.slideshare.net/ShionHonda/bertmobileberttensorflowjs ○ 語彙自体は含まれている ○ 訓練データを用意し、 fine tuningすれば使えるはず ■ TensorFlow Liteモデルもある ■ 簡単な分類ぐらいなら割とすぐできそう
  • 28. 速度面の課題 ● 画像は補完技術が充実 ○ 音声、自然言語への適用は困難 ○ 生成に必要なデータが巨大、計算量も多い ■ GPUでリアルタイムにできるようになってきた ● WaveNet(2016)では1秒の音声生成に1分程度かかっていた ● 量子化 ○ 浮動小数点計算を整数やバイナリで近似する技術 ■ すべての演算を置き換えることが常に可能とは限らない ○ tfjs-modelsは多くをサポート ■ 精度を犠牲にしていることに留意 ● DNNモデルの推論はシングルコア駆動(多分) ○ TensorFlowネイティブランタイムならマルチコア駆動
  • 29. コンピューティングのトレンド ● 歴史は繰り返す ○ 中央集権型 vs 分散型 ■ 「ダウンサイジング」 ● Thin Clinet ■ エッジAI ● DNNモデルを軽量化 ● 組み込み機器で動作させる ● cf. AIスピーカー ○ 処理の大半はクラウド側 ○ 温故知新 ■ LSTM, CNNも20世紀に考案されたもの ○ 次のトレンドは? ■ ニューラルネットのように昔のトレンドが復活する可能性
  • 30. まとめ ● 10年でディープニューラルネットワークが飛躍的な進化 ○ 計算資源とデータセット ○ 第三次AIブーム ■ そろそろ終焉? ● 使うだけならお手軽 ○ 多くのフレームワークと訓練済みモデル ○ ブラウザでも動作 ■ Webカムとの組み合わせ ● DFSG的にはどうか? ○ 再配布不可・商用利用不可のデータセット、訓練済みモデルも多い ■ 研究目的のみ可というものも多い ○ 個人的には再現可能なレベルを心がけている ■ 元データのライセンスに課題
  • 31. NN以外のトピック ● 統計ベース ○ ベイジアンフィルター ■ A Plan For Spam (by Paul Graham, 2002) ● bogofilter, spamassassin等 ● Support Vector Machine (SVM) ● 決定木(Decision Tree)ベース ○ XGBoost ○ LightGBM ○ CatBoost