PyCon JP 2018
東大松尾研流AI人材育成法¶
1900+の受講者に5年間で教えてきた
Deep LearningとPython
基礎研究→社会実践→人材育成
Web工学、プログラミング、DeepLearningを教えている
CS/DLは手を動かさないと習得できない
プログラミングをもってしっかりアウトプットする
第一:探索・推論の時代、ダートマスワークショップ
第二:知識の時代、エキスパートシステム
第三:Hintonニューラルネット
今Deep Learningという技術が最も重要なAIの知識領域である
CNNa, Autoencoders, rnns, gan
AI立国に突き進んでいる国々
カナダ:ベクター研究所、AI修士年間1000人育成
フランス:AI立国、1600億円の投資、Station F、CSスクール42
中国:高精度顔認証、AI発展計画2030年までに160兆円の市場規模
アメリカ:言う必要ないほどの企業たち
Deep Learningライブラリ
Caffe、Touch7、Keras、Chainer・・・
なぜPythonがDeep Learningですごいのか:Numpy
LAPACKとかでかなりネイティブにちかい速さで処理できる
高度な並列性と高いメモリ帯域幅、GPUとちょうど合致
行列や畳み込みの処理を高速に処理できる
Numpy Test System:人材のNumpy力を測定
自動に問題を作って、自動にスコアリングする
問題ジェネレータをたくさんの種類作っている
自動生成、強化学習などたくさんの人から受講しにきている
DL4US:オンライン、エンジニア向け、Kerasを利用した演習
AI人材育成の3つの柱
1プログラミング中心
2コンペティション:コンペが始まると学習時間が増える
3コミュニティを創る:毎週1Lesson公開ペース、掲示板、チームPJ
実践力のあるAI人材の排出を日本全体で加速させる必要がある
Pythonで時系列のデータを分析¶
https://www.slideshare.net/ssuser49f8441/python-114923273
Anacondaでデータ解析環境を導入している
自己相関ACF、偏自己相関PACF
SARIMAモデルの最適なパラメータはもう地道にForで探すしかない
野球の話¶
https://speakerdeck.com/shinyorke/pythonistas-batting-eye-xuan-qiu-yan-number-pyconjp-2018
すごい速度xいい角度で飛距離は伸びる
22度から50度の間を狙う
フライボール革命、フライボールを打つ
Baseball Geekというメディアをやっている
nuxt-coreuiで作った
REST FrameworkだとSerializerで完結できるのでよかった
プロトタイピングはJupyterでやって試す
Bokehでグラフを描画していた
広がるプログラミングの愉しみ¶
https://www.slideshare.net/RansuiIso/python-115121978
今はAWSサポートしているが、開発をメインでやってる
Ultraseek Search Engineを使ったInfoseekの検索エンジンを開発していた
UltraseekもPythonで書かれていた
プログラミングの動機は二種類
めんどうくさい:手間をかけずに最大の成果、手段、あるものを最大限に活用
おもしろそう:手間暇かけて小さな結果、手段は目的、自己満、車輪の再実装
いずれにしても「仕組みの理解」は非常に重要:いかにして実現するのか
プログラミングは絵や楽器のような実現・表現するための強力な武器
YAMAHA TENORI-ONという電子楽器があったので、再開発した
LispBuilder-SDL CLOS Multi-ThreadというライブラリでCommonLispで作った
データの受け渡しはQueueで、データ処理はThreadでやろう
でもこれ、音はでるが、演奏者が居ないので、音楽ではない
じゃあ、楽譜に書かれているものはなにか?音の高さ、音の長さ、タイミング
シーケンサの原理を考えていると・・・MIDIなんてもんもあったな
MMLで楽譜を表現して、それを処理しよう
音の厚みを出すためにエフェクターも実装して処理した
ふたを開けてみると・・・
疎結合オブジェクトモデル
マルチスレッドプログラミング
疑似リアルタイム処理
DSLの開発(言語の設計、コンパイラ、バイトコード)
音響データ操作と再生の基本(PyDSL2)
これらの技術を「学ぼう」としてはじめたわけではない
・・・気がついたらやっていた!
MIDIがあるからそれ使えばいいじゃんも良いんだけど・・・
作ってみることへのご利益
・なぜそのようになっているのか
・どのようにして実現するのか
・どこが簡単で難しいのか
・使える道具はどれで、使えない道具はどれか
・どこがコアで、どこからが応用なのか
こういう知識はエンジニアにとってどれも非常に大切
学習能力は知識・経験量に比例する
なので鶏と卵である、よってとにかく経験し始めること
プログラミングは工業的側面とアート的側面がある
どっちも重要であるので、見落とすことはできない
明日の仕事の役に立たないプログラミングをするのは楽しい!
MonotaRO Python2からPython3¶
1000Req/s、90K出荷/d、20%成長/y
互換性の問題はどういうものがあろうか
シンタックス、ライブラリAPI、セマンティクス/サイドエフェクト
Sphinx-2.0¶
https://docs.google.com/presentation/d/1knfNqWIt1pnNybs0GRGn2qWhdEZs8sqkBI3zg6waPO0
Linux KernelやNumpyやAWS CLIなどのドキュメントと本にも使われている
Autodoc:Pythonのソースコードからドキュメント
Recommonmark:Markdownが使える
dashbuilder:Dash document
ユースケース:Webpage, Reference, Book, Help, Manual
Python2.6まではLaTeXでドキュメント書いていたがSphinxにした
readthedocs (2010):ホスティングサービス
breathe (2011):Doxygen
ablog (2014):ブログ
recommonmark (2015):Markdown
nbsphinx (2016):Jupyter notebook
Sphinx-2.0のゴール
技術同人誌ならvvakameがガチStandardじゃないか
wildcat sdkは量子コンピュータビジネスの味方になるのか!?¶
金融のITテクノロジストをしている
WildcatはWildqatに生まれ変わった(数日前)
ムーアの法則からすると18ヶ月で1.5倍になるはずだが
PCの1億倍早いんなら45年半先の話になる
古典コンピュータでは解けない問題があるから量子コンピュータが研究されてる
多項式時間で計算できない問題の例
組合せ最適化問題(巡回セールスマン問題)・素因数分解・検索
指数関数的な計算になるものは古典コンピュータで解けない
実用的には近似解で対応している
量子化学技術委員会でいろいろ考えられている
量子スプレマシー:49QBITあればスパコンではもう勝てなくなる
無冷媒希釈冷凍機で冷やしている
電子ゲートモデル:IBM, Google, Microsoft
量子アニーリング:D-Wave
レーザーネットワーク・・・
Wildqat:量子コンピュータのシミュレーション計算ができるSDK
課題の定式化→QUBOに→Wildqatで変換→計算→取得
HWとして富士通FPGAアニーリングなどもある
1次元畳み込みフィルターを利用した音楽データのオートエンコーダ¶
Google Magentaってので音楽作れそう
でもMidiだからWavがやってほしい
なんか機械学習で鼻歌とかで作りたい
JupyterでWavを取り出してグラフにするまで12行
機械学習手法で次元削除をしてみよう
全結合オートエンコーダしたら複数曲すると使い物にならない
パターンによる特徴量抽出といえば1次元畳み込み
Strideで次元削減を試みた、ずらし幅ふやすとデータ量が1/3になる
デコードどうする、デコンボリューション
これをKerasでやる、10行ぐらいでエンコーダとデコーダを書いた
料理が美味しく撮れる!¶
https://www.dropbox.com/s/mbehduztv396yvj/pycon_jp_2018_j.pdf?dl=0
SnapDish 日々の料理のモチベーションが良くなる
おいしそうな写真ほど点数が高くなる、一番おいしいタイミングで写真を撮れる
料理じゃないものは点数がつかない。誤作動でお皿だけでも点数ついたりする
形式化して、モデル化して、最適化する
隠れた規則性を見つけるのがモデル化
Deep Learningとは
深いニューラルネットを使った学習
複雑かつ柔軟でパラメータ次第でいろいろできる
その上、データさえたくさんあれば適切なパラメータを見つけられる
GoogLeNetはILSVRC2014チャンピオン
固定帳の画像を入力すると各分類候補クラスの予測確率を出力してくれる
古いけど分類性能はとてもすごい
学習データを集めるには・・・担当者の価値観が強く反映されてしまう
いいねだと・・・いいねの文脈があって、おいしいからいいねとは限らない
学習データとしてカテゴリごとに4・5万枚づつ用意して学習させる
データオーギュメンテーション
ランダムに学習データを加工し拡張してモデルを安定させる
Kerasでランダム加工してくれる関数がもともとあるから使う
疑似リアルタイムスコアリング
直近の数回の評価スコアの最低値を表示する
SnapDishコラボモデルの機械学習マシーンが販売されている
AndroidではMobilenetなどの軽いモデルを使うべきではないかとは話してる