Google Developers チャンネル

Googleの回し者ではないですが、素晴らしいコンテンツと思ったので紹介。
https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal
→学生への講義なら、最初の3回位はこの動画を流すだけでいいんじゃないかと思うくらいよくできています。

devサミ2017
https://events.withgoogle.com/tensorflow-dev-summit/
→海外まで行かなくても、インターネットにさえ繋がっていればいつでも見られます。いい時代になったもんだ。

おすすめ理由3つ
1. 動画コンテンツなので、気楽に始められる。
2. 英語のリスニングができなくても、字幕でほとんど補える。
3. 実際に使っている様子を見ることができる。


1. 動画コンテンツなので、気楽に始められる。
記載通り。
気張って本を開いて、PCを起動して、・・・ということがなく、
最初はタブレットで動画を眺めるだけで始められます。


2. 英語のリスニングができなくても、字幕でほとんど補える。
コンテンツの提供言語は英語です。
ただし、YouTubeの字幕機能で、字幕が出せます。
これがまた素晴らしくて、英語の字幕が出せるだけでなく、
日本語への翻訳までしてくれます。

なおかつ、英語→日本語への翻訳精度が凄まじく良いです。
字幕を見ると不自然な日本語を見つけるのが難しいくらいに。(*)

もう一つ付け加えると、YouTubeの「文字起こし」機能をつかうと、動画字幕の一覧を見ることができて便利。
目次の代わりや、講義ノートとして使えます。

3. 実際に使っている様子を見ることができる。
コードを書いて機械学習を作っていくその過程を見ることができます。
文章の場合だと最初から出来上がったコードが、ドカンと書かれていて、尻込みしてしまうこともありますが、
YouTubeだとモデル作成のためのコーディングの過程を見ることができるます。
→動画の利点を生かしています。



余談(*)

字幕サービスは、自然言語処理機械学習によって行われている分野なので、そこでしょぼいアウトプットだと機械学習関係者に舐められるので、その対策も含まれているかも。

Googleが自社のTensorFlowとGCP機械学習サービスに囲い込むための布石にしか見えない。
位置づけとしては、機械学習の初学者を、とっつきやすい動画コンテンツで取り込む あたりか。
他の適当な英語の動画を日本語に翻訳して比較するとわかるが、機械学習の翻訳精度はそこまで高くない。
なので、明らかに人の手(プロの翻訳家orGoogleの社員)によって追加された字幕。
使う側の立場から言うと、コンテンツの質が良ければそれを使う。
仮に、TensorFlowへの囲い込みがあったとして、TensorFlowの使い勝手が他のフレームワークよりも良ければ、TensorFlowを採用する。
最悪、TensorFlow以外では、まともに機械学習のモデルを作れない体になったとしても、
天下のGoogle様ご提供のフレームワークなので、そんなにマイナーなエンジニアにはならんでしょうという読みもできる。
ちなみに、GoogleのAIへの投資はすんごいです。AI向けのフレームワーク、開発環境、コンパイラプロセッサーを作っている。
http://rebuild.fm/206/ の47:16以降参照

三枝匡四部作を読んだ後に、最強のデータ分析組織を読んだ感想

↑を読んだ後に、↓を読んでみた。
最強のデータ分析組織 なぜ大阪ガスは成功したのか

最強のデータ分析組織 なぜ大阪ガスは成功したのか

要約すると、データサイエンティストチームがボトムアップで会社に対する貢献度を高めていった話。
データサイエンティストが持つマインド、行動規範、行動目的としては、よくできている。
ただし、その範囲を逸脱していないので、データサイエンティストが自身の業務で
所属している会社に対する利益貢献を最大化するための指針としては使える。
言葉を選ばずに言えば、データサイエンティストが専門バカにならないために読むべき本と言える。

ただし、この本に書かれている内容から読み取れることは、
データサイエンスを活かした競争力の強化をする際の大阪ガスの経営陣(上級管理職と言い換えてもいい)の
リーダーシップの不在が気になった。
言い換えると、経営者がこの本を読んで、この通りのチームになってもらいたいと
データサイエンティストのチームリーダーに依頼するのは明らかな誤り。
経営者は文字通りトップなので、トップダウンで物事を進めるべし。

というのは、データサイエンスもスキルの一つでしかなく、
そのスキルをどのような形で活かすかということを考えるのも経営の一部であるため。
少し具体化すると、経営レベルでやるべきことは、利益を出すという大原則からスタートして、
そのために、行動方針を明らかにし、そのための最適な組織構成にし、
利益を出すために各人が何をするべきなのかというタスクを明確にし、それを徹底させることにある。
もう一歩具体化して、QCT(Quality, Cost, Time)の観点から言うと、
その時、着目している項目に対して密度の高いアプローチを
損益を直接負っているラインで全体で向上させるときに、データサイエンティストも加わえているという状態にするべき。
例として、競合に勝つために今一番伸ばさなければならない要素が、Timeであると仮定する。
1. 過去の資料探しをドキュメント検索システムを導入することで、高速化する→IT
2. 業務フローを見直して、多少の精度(Quality)は落ちるが、重要度が高くない項目の確認を削る。→仕組み(ワークフロー)
3. 市場のニーズを把握するために、統計情報を要約したものを自動で集計および表示し、それをたたき台に更に営業戦略を練る。IT+仕組み

で、何が言いたいかというと↑の1.や3.のようなアウトプットがデータサイエンティストから
多く出るような「仕組み」を作るのが上級管理職の役割。
もし僕が上級管理職なら、データサイエンスチームなんぞつくらず、
データサイエンティストを損益に直接関連するラインに所属させて、
「君(データサイエンティスト)のスキルをつかって、時間を短縮する案を出して、実行して、成果を出せ」 と命じる。
なおかつ、損益に応じて、インセンティブを設定する。つまり、改善効果が大きいと収入が増えるようにする。
間違っても、間接部門として社内SEの延長線上の業務改善チーム扱いにはしない。

PyTorchでA Nueral Algorithm of Artistic Styleを試してみる

chainerではすでに実装されているので、PyTorchでも実装されていないか探してみる
https://github.com/mattya/chainer-gogh


PyTrochのチュートリアルにあった(汗)
https://pytorch.org/tutorials/advanced/neural_style_tutorial.html



ケイティ先生をピカソの画風にしてみる

ピカソの絵(学習対象)

ネット上で拾ったケイティ先生の画像(適用対象)

ピカソ画風に変換後


ゴッホの絵(学習対象)

ゴッホ画風ケイティ先生


ムンクの絵(学習対象)

ムンク画風ケイティ先生


■いくつか注意点

・pytorchのバージョンは0.4にしないと動かない

・学習対象の画像と適用対象の画像の縦横比は一致しないといけないので、ちょっと横を切ったりしている


・画像サイズは内部で変換しているが、256*256になるようにしている
ソースのL185あたりだと↓だが、学習の時間をなるべく少なくしたいため(いちおうCUDAはインストール済み)


imsize = 512 if torch.cuda.is_available() else 128 # use small size if no gpu
→この条件だと5分くらいで学習が終わった





■余談
おおっと、手が滑って学習対象と変換対象を入れ替えてしまった(棒)

sally(ケイティ先生の絵師の名前)画風ムンクの叫び

Jupyterが動かないときのトラブルシューティング

juptyer notebookを立ち上げても正常に起動しない。
↓なエラーが出る


(pytlesson) C:\anaconda3\envs\pytlesson>jupyter notebook
[I 06:01:49.507 NotebookApp] Serving notebooks from local directory: C:\anaconda3\envs\pytlesson
[I 06:01:49.507 NotebookApp] The Jupyter Notebook is running at:
[I 06:01:49.507 NotebookApp] http://localhost:8888/?token=4efb98535e84bd982fbbdc349c91f78ba9bea7f4cd53f7
[I 06:01:49.507 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:01:49.538 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=4efb98535e84bd982fbbdc50349c91f78ba9bea7f53f7
[I 06:01:50.057 NotebookApp] Accepting one-time-token-authenticated connection from ::1
[I 06:02:04.136 NotebookApp] Creating new notebook in
Traceback (most recent call last):
File "C:\anaconda3\envs\pytlesson\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\anaconda3\envs\pytlesson\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\anaconda3\envs\pytlesson\lib\site-packages\ipykernel_launcher.py", line 15, in
from ipykernel import kernelapp as app
File "C:\anaconda3\envs\pytlesson\lib\site-packages\ipykernel\__init__.py", line 2, in
from .connect import *
File "C:\anaconda3\envs\pytlesson\lib\site-packages\ipykernel\connect.py", line 13, in
[I 06:02:22.438 NotebookApp] Kernel started: 8f73d355-143c-4bb6-b0e5-79befa2810fe
from IPython.core.profiledir import ProfileDir
File "C:\anaconda3\envs\pytlesson\lib\site-packages\IPython\__init__.py", line 55, in
from .terminal.embed import embed
File "C:\anaconda3\envs\pytlesson\lib\site-packages\IPython\terminal\embed.py", line 16, in
from IPython.terminal.interactiveshell import TerminalInteractiveShell
File "C:\anaconda3\envs\pytlesson\lib\site-packages\IPython\terminal\interactiveshell.py", line 22, in
from prompt_toolkit.shortcuts import create_prompt_application, create_eventloop, create_prompt_layout, create_output
ImportError: cannot import name 'create_prompt_application'

https://github.com/jupyter/jupyter_console/issues/158


↑というわけで


pip install prompt-toolkit==1.0.15 -U

前の記事からするとギャグだなこれ・・・