フリーランチ食べたい

No Free Lunch in ML and Life. Pythonや機械学習のことを書きます。

PyCon JP 2019で見たセッションの聴講記録20個分 / 資料・動画・関連リンクなど

2019年9月16日/17日に開催されたPyCon JP 2019で自分が直接/YouTubeで聴講したセッションについてのまとめです。主に下記の内容を書いています。

  • スピーカーURL
  • 配信動画
  • スライド
  • 発表内で出てきたライブラリなどのURL
  • 自分の感想

「あのセッションで話していたライブラリなんだっけ」と思い出したい方やざっくり内容が知りたい方に読んでいただければ幸いです。PyCon JPに自分も発表者としても参加し、スタッフとして参加し、Webサイトの開発もしたので、それについては改めて書きたいと思います。

f:id:ikedaosushi:20190917173649p:plain

pycon.jp

PythonとAutoML / 芝田 将

スピーカー: https://twitter.com/c_bata_
動画: https://www.youtube.com/watch?v=Whkwu46DgBs
スライド: https://www.slideshare.net/c-bata/pythonautoml-at-pyconjp-2019

HypterParameter Tuningの種類

解説するライブラリ

Oputunaを使うとき

  • SQLite3は使わない
  • カーディナリティの高い質的変数は避ける

Feature EngineeringのAutoMLライブラリ

Feature EngineeringをするTool

DFS

特徴量選択のAutoML

  • 3つの分類(by guyon03a.dvi)
  • フィルター法
    • sklearn.SelectBest
  • ラッパー法
    • sklearn.RFE
  • 組み込み法

CASHプロブレム

  • ハイパーパラメータチューニングとモデル選択を組み合わせた問題

Auto-sklearn

  • SMAC3を用いたベイズ最適化
  • Frank Hutter先生が開発・使用

TPOT

Automated Neural Architecture

  • AutoKeras
  • DEvol
  • HyperAS
  • AutoNet(未公開。そのうち公開)

機械学習におけるハイパーパラメータ最適化の理論と実践 / 野村 将寛

スピーカー: https://nmasahiro.com/
動画: https://www.youtube.com/watch?v=F1GGPQlra-E
スライド: https://speakerdeck.com/nmasahiro/ji-jie-xue-xi-niokeru-haihaharametazui-shi-hua-falseli-lun-toshi-jian

ハイパーパラメータ最適化

問題を抽象化するとBlack-box最適化問題として扱える

Black-box最適化

関数の中身がBlackboxで勾配情などが使えない

ベイズ最適化

  • GP-EI
    • GPによってモデル化し期待値最大化になるパラメータを選択する
    • 最適化は多峰性があるので、EDAやCMA-ESなどを使う
    • 空間全体をモデル化している
  • TPE
    • GP-EIと同様にEIによって最大化をするが
    • GPでなく上位/下位どちらかに入るかの確率モデル
    • HypyerOpsやOptunaでデフォルトで採用
    • 上位空間と下位空間の「しきい値」を探索している

CMA-ES

  • 探索空間内で正規分布をサンプリング&評価&重み付け、再度サンプリングというように更新していく
  • 「確率分布を勾配降下法で更新している」イメージ

ベイズ最適化 vs CMA-ES

  • GP-EI: t3、TPE: t、CMA-ES: 1
  • 問題クラスを決めないと最適な最適化手法は選べない(ノーフリーランチ)

Gray-box最適化

例えばDNNにおいてEpochの途中の結果を最適化する方法

Successive Halving

Hyperband

Successive Halvingでの絞り込み方を変えながら行うアルゴリズム(改善)

BOBH

Hyperbandの絞り込み方をランダムでなくベイズ最適化で効率的に行う方法

BOHB: Robust and Efficient Hyperparameter Optimization at Scale

PBT

ベイズ最適化含むシーケンシャル的な手法とサンプリング的な手法を組み合わせたもの

Population based training of neural networks | DeepMind

マルチタスク問題

似た問題から情報を得て最適化を効率化する問題

MTBO

タスク間の関係をGPによりモデリングする手法

Multi-Task Bayesian Optimization

ツール群

Using Python in Music Signal Processing, Speech Recognition and Intent Classification in Chatbot / Renyuan Lyu

スピーカー: https://twitter.com/RenyuanLyu (凍結)
動画: https://www.youtube.com/watch?v=L1zaX0hQ9YQ
スライド: https://www.slideshare.net/tarzanlyu/py-conjp2019-renyuanlyu3-172389132

メモ/感想

  • カラオケバトルシステムを作る話
  • 選曲が、「中島みゆき」とか「美空ひばり」とかでスピーカーが実際にカラオケしていて面白かった
  • 変数が半分くらい中国語でかなり新鮮だったw

f:id:ikedaosushi:20190917172619p:plain

f:id:ikedaosushi:20190917172632p:plain

Python による日本語自然言語処理 〜系列ラベリングによる実世界テキスト分析〜 / 池田 大志

スピーカー:
動画: https://www.youtube.com/watch?v=AH1TWVGhdcI
スライド: https://speakerdeck.com/taishii/pycon-jp-2019

nagisa

昨年発表されたBiLSTMを使用した形態素解析エンジン。池田さんが製作者。

taishi-i/nagisa: A Japanese tokenizer based on recurrent neural networks

nagisa: RNNによる日本語単語分割・品詞タグ付けツール - Qiita

nagisaの利用例

文章要約ツール: yubessy/textrankdemo: Demonstration of TextRank Algorithm コーパスから統計量抽出:BLKSerene/Wordless: An Integrated Corpus Tool with Multi-language Support for the Study of Language, Literature and Translation

redditの文章要約: NTT’s Machine Translation Systems for WMT19 Robustness Task

nagisaの特徴

  • 未知語に強い
  • 顔文字やURLの分割に強い
  • 品詞でのフィルターが容易
  • 独自の辞書の登録が容易

Dashとオープンデータでインタラクティブに日本経済を可視化する / 小川 英幸

スピーカー: https://twitter.com/OgawaHideyuki
動画: https://www.youtube.com/watch?v=WLbQYFZc-YY
スライド: http://pyconjp.herokuapp.com/

メモ/感想

  • Plotly Express: Plotlyのラッパーライブラリ
  • チュートリアル of Dash的な内容だった

ML Algorithm to Detect Rare Clinical Events / Haque Ishfaq

スピーカー: https://twitter.com/haqueishfaq
動画: https://www.youtube.com/watch?v=bsMgUhL1tb8
スライド:

メモ/感想

  • ラベル分類問題でテストケースでレアなケースが出てくると予測する問題がある
  • Triplet loss Based VA
    • Tripletで生成した特徴量でVAEを作成する手法?

ListはIteratorですか? / 成瀬基樹

スピーカー: https://twitter.com/narusemotoki
動画: https://www.youtube.com/watch?v=Ig6X6VH15RY
スライド: https://docs.google.com/presentation/d/1mXOBuUIG_jlyKwxO792Nk6WQphyts2uuerPkDarwGFg/edit?usp=sharing

メモ/感想

  • ListはIteratorではない
    • あれ、そっか。となった。
    • Iterableでした。
  • 途中のビルドインオブジェクトの継承関係がかなりわかりやすかった
  • SupportsInt知らなかった

pandasのStyling機能で強化するJupyter実験レポート / Tomoko FURUKI

スピーカー: https://twitter.com/komo_fr
動画: https://www.youtube.com/watch?v=T8lL9Nb3hMM
スライド: https://speakerdeck.com/komofr/pyconjp-2019

メモ/感想

  • まだProvisoningフェーズ、しかし4年経過。ただメンテナンスはされている
  • GitHubでは表示されないのでnbviewerを使う

Pythonで切り開く新しい農業 / 小池 誠

スピーカー: https://twitter.com/komo_fr
動画: https://www.youtube.com/watch?v=0bTPOsVvG7g
スライド:

メモ/感想

  • 「Deeplearningできゅうり分別」の方
  • 元々組み込みエンジニアだったとのこと
  • それまでにPythonで作った「合わせ調味料自動生成装置」「スプラウト自動栽培装置」が面白かった
  • きゅうり判別機は、学習させる前に「人間が正しく分類できるのを試すためにWebApp」を作っている
  • 初期モデルは「おそすぎる」「いぼ(きゅうりの健康状態の証明)が取れてしまう」という問題があった
  • 「AIが人間をサポートする」というモデルに切り替えた
  • 時期による違いは、人間が調整可能な「キャリブレーション装置」を導入して解決した
  • AIは「人と人との間に満ちていく」ものだと感じた

Modern development environments for Pythonistas / Dustin Ingram

スピーカー: https://twitter.com/di_codes
動画: https://www.youtube.com/watch?v=d3cj4f63u-A
スライド:

メモ/感想

KubernetesとJupyterHubで構築する機械学習eラーニングサイト / 石田 光一

スピーカー: https://twitter.com/wapa5pow
動画: https://www.youtube.com/watch?v=VjH2P2xcJyg
スライド: https://speakerdeck.com/wapa5pow/kubernetes-k8s-tojupyterhubdegou-zhu-suru-ji-jie-xue-xi-eraningusaito

メモ/感想

Python Webフレームワーク比較 / 寺田学

スピーカー: https://twitter.com/terapyon
動画: https://www.youtube.com/watch?v=drKDKvnWulc
スライド: https://speakerdeck.com/terapyon/python-webhuremuwakubi-jiao

メモ/感想

Pythonで始めてみよう関数型プログラミング / 寺嶋 哲

スピーカー: https://twitter.com/meganehouser
動画: https://www.youtube.com/watch?v=hGfWInLzKHQ
スライド: Pythonで始めてみよう関数型プログラミング - Speaker Deck

メモ/感想

Pythonでライブをしよう -FoxDotを使った新時代のPython活用法- / 田中 慎太郎

スピーカー: https://twitter.com/_sin_tanaka
動画: https://www.youtube.com/watch?v=lCQWLAJf6xQ
スライド:

メモ/感想

入門 自作検索エンジン / ryo kato

スピーカー: https://twitter.com/_ryook
動画: https://www.youtube.com/watch?v=5EEH8MHfAyA
スライド: https://speakerdeck.com/ryook/the-first-step-self-made-full-text-search

メモ/感想

知ろう!使おう!HDF5ファイル! / thinkAmi

スピーカー: https://twitter.com/thinkAmi
動画: https://www.youtube.com/watch?v=bSdRlfC2yqA
スライド: https://speakerdeck.com/thinkami/pycon-jp-2019-talk

メモ/感想

Getting Started with Asynchronous Python Web Development / Enzo Calamia

スピーカー: https://github.com/enzzc
動画: https://www.youtube.com/watch?v=3Me7IU-kjq0
スライド:

メモ/感想

DjangoとJupyterで始めるPyData / 熊谷 拓也

スピーカー: https://twitter.com/kumappp27
動画: https://www.youtube.com/watch?v=QLRabej3I6E
スライド:

メモ/感想

Python製シェルxonshの紹介 / Shunsuke Kawai

スピーカー: https://twitter.com/vaaaaanquish
動画: https://www.youtube.com/watch?v=UShlTE8wdzU

スライド:https://speakerdeck.com/vaaaaanquish/pycon2019-pythonzhi-sieruxonshfalseshao-jie

メモ/感想

pythonで、処理をより効率化するためのTips集 / 長谷川大耀

スピーカー: https://twitter.com/Hase8388
動画: https://www.youtube.com/watch?v=UShlTE8wdzU
スライド: https://speakerdeck.com/hiroaki8388/pythonde-chu-li-woyorixiao-lu-hua-surutamefalsetipsji

メモ/感想

  • yieldで遅延処理
  • リクエスト送信時にfunctools.lru_cache()でキャッシュ化
    • 状態が変わるときはクリアする
  • one-hot-encodingでは疎行列を使う

(ポスター)VS CodeとPYRIGHTで始める型のある生活 / Yuto Mizutani

スピーカー: https://twitter.com/tenajima
スライド: https://speakerdeck.com/tenajima/vs-codetopyrightdeshi-meruxing-falsearusheng-huo

メモ/感想

  • pyright: MS製の型チェックツール
  • Node製なのでCIのときどうするかという悩みがある
    • mypyはPython製なので大丈夫
  • ストレスに感じるほどではないがたまに遅いと感じる
  • とりあえず使ってみようと思った

さいごに

自分が知らないライブラリやアルゴリズムを数多く知ることができ、大変有意義なカンファレンスでした。スピーカーの皆さん、スタッフの皆さん、ありがとうございました。

ちなみに自分は下の内容で発表してきました。

blog.ikedaosushi.com