hunting planet machine learning

Earth to exoplanet: Hunting for planets with machine learning
https://www.blog.google/technology/ai/hunting-planets-machine-learning/

太陽系外の恒星の周りに存在する惑星を発見する為に機械学習を用いている。
惑星が恒星の前を通る時に明るさが落ち込むパターンを学習して、太陽系外惑星の可能性のある候補を精査している

その他googleの機械学習
– 検索エンジン
– 迷惑メール仕分け
– メール返信の文案
– レコメンデーション
– 翻訳
– 画像認識

人間がやってることほぼ全てに応用できるってことか。

Assisting Pathologists in Detecting Cancer with Deep Learning

Googleが取り組む機械学習の中に、ガンの画像診断がある
https://ai.googleblog.com/2017/03/assisting-pathologists-in-detecting.html

マイクロファージではなく腫瘍を正しく検出する

これは腫瘍でやってるけど、人間の目で判断していることを
deep learningでソリューションを提示できればビジネスになるってことかな。

機械学習に必要な数学

回帰モデルでは、予測関数や損失関数に次のような数式が出てくる

– シグモイド関数
– 予測関数
– 損失関数

指数関数、対数関数、微分、偏微分、多変数関数
とりあえず数学的基礎が必要らしいな。amazonで入門本の購入から始める。

機械学習モデル

機械学習モデルを理解することがまず第一

ロジスティック回帰
– 線形回帰式をシグモイド関数にかけて確率値と解釈
ニューラルネットワーク
– ロジスティック回帰の仕組みに隠れ層ノードを追加
サポートベクターマシン
– 2クラスの標本値と境界線の距離を基準に最適化
単純ベイズ
– ベイズの公式を用いて観測値から確率を更新
決定木
– 特定の項目の閾値を基準に分類
ランダムフォレスト
– 複数の決定木の多数決で分類を実施

ロジスティック回帰、ニューラルネットワーク、ディープラーニングは、
予測モデルの構造は事前に決まっていて、パラメータ値にだけ自由度
モデルの構造
(1)個々の入力値にパラメーター値をかける
(2)かけた結果の和をとる
(3)結果にある関数を作用させ、その関数の出力を最終的な予測値(yp)とする

パラメータ値の最適化が学習
モデルが正解値をどの程度正しく予想できるかを評価するための損失関数を定める

つまり、ディープラーニングは線形回帰モデルの発展型といっても過言ではない。
最初に「線形回帰モデル」を学び、そこから、分類モデルのロジスティック回帰、ニューラルネットワーク、ディープラーニングを理解するのが良い。なるほど。

Kubernetesをインストールしよう

[vagrant@localhost waymo-od]$ sudo yum -y install bash-completion tcpdump chrony wget git

[vagrant@localhost waymo-od]$ sudo vi /etc/yum.repos.d/virt7-docker-common-release.repo

name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0

[vagrant@localhost waymo-od]$ sudo yum -y install –enablerepo=virt7-docker-common-release kubernetes etcd flannel
読み込んだプラグイン:fastestmirror
File contains no section headers.
file: file:///etc/yum.repos.d/virt7-docker-common-release.repo, line: 1
‘name=virt7-docker-common-release\n’

ん?section headers?

sudo yum -y install –enablerepo=virt7-docker-common-release kubernetes etcd flannel

エラー: パッケージ: etcd-2.0.9-1.el7.x86_64 (virt7-docker-common-release)
要求: systemd
エラー: パッケージ: docker-1.6.2-4.gitc3ca5bb.el7.x86_64 (virt7-docker-common-release)
要求: systemd
エラー: パッケージ: flannel-0.2.0-7.el7.x86_64 (virt7-docker-common-release)
要求: systemd

/etc/hosts

マシンのIPアドレスを決めて、そのアドレス設定を、ネットワーク上の全てのマシンに伝える

[vagrant@localhost waymo-od]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1はループバックアドレス

kubernetesとは?

kubernetesとは?
-> 自動デプロイ、スケーリング、アプリ・コンテナの運用自動化のために設計されたオープンソースのプラットフォーム
-> Dockerコンテナをクラスタ化した際の運用ツール

– アプリを迅速に予定通りにデプロイ(コンテナをサーバー群に展開)
– 稼働中にアプリをスケール(稼働中にコンテナ数を変更)
– 新機能をシームレスに提供開始(稼働中にロールアウト)
– ハードウェアの利用率を要求に制限(コンテナで共存させて稼働率を高くする)

パブリッククラウド、プライベートクラウド、ハイブリッドクラウド、マルチクラウド
モジュール化、追加可能、接続可能、構成可能
自動配置、自動再起動、自動複製、自動スケーリング

管理上の基本単位はPodという
– volume: 記憶領域を共有するコンテナの集まり
– Container
– IP ADress

要するに、
– アプリを迅速に予定通りにデプロイ
– 稼働中にアプリをスケールする
ことができるらしい。。。

WAYMO Open Dataset

流石に翻訳はないか。
https://waymo.com/open/

>The Dataset is about 1TB after compression for 1000 segments. Segments have been packaged into multiple files of about 25GB each.

>All segments contain 3D labels. The 100 segments that also contain 2D labels have been packaged into the first three files under ‘Training’ and the first file under ‘Validation’.

何これ?git hubもありますね。pythonです。
https://github.com/waymo-research/waymo-open-dataset/blob/master/tutorial/tutorial.ipynb

google colab
https://colab.research.google.com/notebooks/welcome.ipynb#recent=true

[vagrant@localhost local]$ python -V
Python 3.5.2

system requirement
– g++ 6 or higher.
– Python 3.
– TensorFlow 1.14.0 or higher.

g++って、c++じゃん。使わんなー

とりあえずgit clone
[vagrant@localhost waymo]$ git clone https://github.com/waymo-research/waymo-open-dataset.git waymo-od
Initialized empty Git repository in /home/vagrant/local/waymo/waymo-od/.git/
remote: Enumerating objects: 50, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 174 (delta 17), reused 35 (delta 12), pack-reused 124
Receiving objects: 100% (174/174), 14.00 MiB | 2.93 MiB/s, done.
Resolving deltas: 100% (45/45), done.

[vagrant@localhost waymo-od]$ git checkout remotes/origin/r1.0
Note: checking out ‘remotes/origin/r1.0’.

You are in ‘detached HEAD’ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

HEAD is now at 2f30db6… Merge branch ‘master’ into r1.0
[vagrant@localhost waymo-od]$ git branch
* (no branch)
master

あれ?

sudo apt-get install --assume-yes pkg-config zip g++ zlib1g-dev unzip python3 python3-pip
BAZEL_VERSION=0.28.0
wget https://github.com/bazelbuild/bazel/releases/download/0.28.0/bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh
sudo bash bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh
sudo apt install build-essential

これ、debian向けに書かれてる?

そして、bazelってビルドツール?makeでないんかい。

Googleが取り組む機械学習

Google, Amazon, Facebook, Apple, Microsoftはどのように機械学習に取り組んでいるのか?まずそれを知ることが大事。

■Google
自動運転への取り組みとしてWaymo
https://waymo.com/

続いて、Waymoのsoftware engineeringの採用情報を見てみましょう。

Data scientistの条件。phDか。。まじかー。
We’d like you to have:
PhD in statistics, math, or other quantitative area
Progressive statistics background either in academia or industry
Data science and system evaluation experience
Willingness to understand a complex system and its various components
Experience with tools for manipulating big data
Experience with R/Python and statistical libraries

続いてDeep Leaningのsoftware engineer
PhD in Computer Science, Machine Learning, Robotics, similar technical field of study, or equivalent practical experience
Experience in applied Machine Learning including data collection, analysis and feature engineering
Experience in Deep Learning research
Experience with TensorFlow
Experience programming in Python/C++

そうか、computer scienceはOKとして、Machine Learning, Roboticsは必須だな。

スタートアップとしては、プロトタイプを作りながら、ブラッシュアップが定説。
Hardwareの知識と組み合わせると、難易度が一気に上がる。つまりそこか。

まずはmachine learningとアプリケーションからか。