gaccoの修了証を表示する場所もないので、このエントリに貼り付けていくことにしました。
ちなみに「AI/機械学習/データサイエンス関連の検定・資格の取得履歴」というページもあります。
gaccoの修了証を表示する場所もないので、このエントリに貼り付けていくことにしました。
ちなみに「AI/機械学習/データサイエンス関連の検定・資格の取得履歴」というページもあります。
質的な変数同士でクロス集計表を作ると、独立変数(説明変数)と従属変数(目的変数)の関連を「独立性のカイ二乗検定」で計算できる。変数が多項目になるなら「相関係数」を使えばよい。
たぶんクロス集計表を使うことなんて今後もない気がするけど、「クロス集計表」関連のノートは、このエントリにまとめていく予定。
r
ρ
(ロー)τ
(タウ)本稿は、下記イベントの3日目(機械学習)を視聴時に取った個人的なノートをほぼそのまま公開したレポート記事です。誤字誤植や勘違いがある可能性があるのでご了承ください。 ざっくり目を通すと、機械学習関連のセッションの概要が分かると思います。視聴する際の判断材料や、内容を思い出すためのご参考に。
なお、3日目の6/11当日は人工知能学会全国大会と日程が被っており、ライブ参加はできなかったので、後日6/12にオンデマンド配信を視聴しました。あと18日間、6月30日まで視聴できます。2020/7/9現在、オンデマンド配信中です。
Google Cloud(GCP)のAI関連の構成図が提示されました。
どんな人が使えるものかがざっくりと示されました。
コンタクトセンター用のソリューションです。Google Cloud Text-to-Speechなどが使えるらしいです。コンタクトセンターについては、自分にはちょっと遠い話題なので割愛します。
Cloud AutoMLは、カスタムモデルを作成できる機能です。名前と違って、自動で機械学習を行ってくれる技術というわけでは必ずしもありません。次のような感じで使えます。
Cloud AutoMLには次のようなものがあります。
ビジネスにとっても価値のあるデータは以下のようなものがあるそうです。構造化データや時系列データが大きな部分を占めています。
そのうちの構造化データにAutoML Tableが使えると。自動的に特徴量を選択して、整形されていないデータを考慮してくれるなどのメリットがあります。
機械学習プロジェクトを効率的に本番環境に構築するためにAI Platformが使えます。具体的には次のようなフロー全体をAI Platformが支援します。
このあと、それぞれのプロダクトの機能紹介がありました。超要約すると、いろんな機能があって効率的になるよ~、ってことです。
AIの中身はブラックボックスと言われていますよね。
AI Explanationsで推論結果に「説明」を付加できます。
「機械学習とモデリングの違い=ツールボックスアプローチとモデリングアプローチの違い」が示されました。
TFPでいろいろ効率的になります。より具体的にビフォーアフターが説明されました。
次に線形回帰で例が示されました。まず、TFPをインポートして散布図を描画。
各点にフィットする回帰直線の式を設計。
推論計算を実行。
結果を可視化。ベイズモデリングは予測を分布で表現するので多数の線が引かれたような図になります。
以下の事例が示されました。
ML開発を支える人材が少なく、その作業も複雑で大変です。そのハードルを下げるためにグーグルが提供するのがCloud AutoML。例えばAutoML Visionでは画像認識・物体検知のカスタムモデルが作れます。ここでデモが流れました。まずはデータをインポート。
それからトレーニング。
結果を確認してカスタムモデルは完成。
あとはエクスポートして使います。ラズパイなどで画像認識するデバイスなども作れます。
AutoML Translation、AutoML Natural Languageなど他にもあります。
AutoML Tablesを使うと、構造化データ(表データ)のカスタムMLモデルを作成できます。前処理が簡単。最も良いモデルが自動的に選択されます。
そのバックグラウンドは次のような仕組みになっているそうです。
ここで登壇者が尾崎氏(渋谷駅前で働くデータサイエンティストとして有名な方ですね)に代わりました。機械学習の基本的なことが解説されていきます。わかりやすいです。例えば過学習について。
過学習を避けるためには必要な交差検証の話。
これに対応する機能もAutoML Tablesには搭載されているとのことです。
以前は多くの人的リソースを使って開発していたものが、AutoML Tablesでより少人数で簡単にできるようになってきているそうです。
株式会社プレイド 春日 瑛, Google Cloud 脇阪 洋平
AI Platform: Training、Prediction、Notebooks、Pipelines
GCPと他社製品を組み合わせたCI(継続的インテグレーション)/CD(継続的デプロイ)の実現:
質問:販売予測や需要予測での、BigQueryとAutoMLの使い分けは?
上記のリンクをクリックするだけで、RカーネルのColabノートブックを新規作成できます(※ノートブックがGoogleドライブに保存されます。ちなみに「create=false」としても新規作成されてしまいます)。ブックマークするか、ショートカットリンクを保存しておくのがお勧めです。
関連として、下記のリンクをクリックすると、新規作成せずにPythonカーネルのColabノートブックを一時作成できます(※ノートブックは保存されません)。Rカーネルで一時作成する方法は分からないです。
また、次のリンクをクリックで、Colabのノートブック選択ダイアログが開きます。
Google Colabは、グーグルが独自にカスタマイズして提供しているJupyter Notebook環境(Googleドライブのアドオン)です。基本的には、Jupyter Notebook(やJupyterLab)と機能が共通的です。
Colabは、通常、Pythonを実行できる開発環境/ノートブックとなっています。その実行エンジン(ランタイム)は、カーネル(kernel)と呼ばれ、実はPython言語(バージョン2とバージョン3)以外にもR言語/Swift言語が最初からサポートされています。
そのことは、Pythonカーネル上で!jupyter kernelspec list
というコマンドをコード実行すると確認できます。
このうち、ir /usr/local/share/jupyter/kernels/ir
と書かれている部分ですね。
使い勝手はPythonカーネルと同じです。MarkdownテキストもRコードも自由自在に書けます。
上記のリンクをクリックするだけで、SwiftカーネルのColabノートブックを新規作成できます(※ノートブックがGoogleドライブに保存されます。ちなみに「create=false」としても新規作成されてしまいます)。
関連として、下記のリンクをクリックすると、新規作成せずにPythonカーネルのColabノートブックを一時作成できます(※ノートブックは保存されません)。Swiftカーネルで一時作成する方法は分からないです。
また、次のリンクをクリックで、Colabのノートブック選択ダイアログが開きます。
Google Colabは、グーグルが独自にカスタマイズして提供しているJupyter Notebook環境(Googleドライブのアドオン)です。基本的には、Jupyter Notebook(やJupyterLab)と機能が共通的です。
Colabは、通常、Pythonを実行できる開発環境/ノートブックとなっています。その実行エンジンは、カーネル(kernel)と呼ばれ、実はPython言語(バージョン2とバージョン3)以外にもR言語/Swift言語が最初からサポートされています。
これは、Pythonカーネル上で!jupyter kernelspec list
というコマンドをコード実行すると確認できます。
このうち、swift /usr/local/share/jupyter/kernels/swift
と書かれている部分ですね。
使い勝手はPythonカーネルと同じです。MarkdownテキストもSwiftコードも自由自在に書けます。
「とにかくコピペだけでサクッと動かせるニューラルネットワークのコードが欲しい」というときがあるのだけど、検索してもなかなか出てきません。そこで、とにかくコピペだけ試せる最小コードを作りました。TensorFlow/Keras版です。
# ライブラリのインポート import tensorflow as tf import tensorflow.keras.backend as K # 入力データ NUMBER_OF_DATA = 64 INPUT_FEATURES = 1000 HIDDEN_FEATURES = 100 OUTPUT_FEATURES = 10 x = tf.random.normal([NUMBER_OF_DATA, INPUT_FEATURES]) y = tf.random.normal([NUMBER_OF_DATA, OUTPUT_FEATURES]) #x.shape # TensorShape([64, 1000]) #y.shape # TensorShape([64, 10]) # モデルの定義 model = tf.keras.models.Sequential([ tf.keras.layers.Dense(input_shape=(INPUT_FEATURES,), units=HIDDEN_FEATURES), tf.keras.layers.ReLU(), tf.keras.layers.Dense(OUTPUT_FEATURES) ]) #model.summary() # ★選択肢1★ トレーニング(簡易版) LEARNING_RATE = 0.03 # 学習率: 0.03 EPOCHS = 100 # エポック数: 100 LOSS = 'mean_squared_error' model.compile( optimizer=tf.keras.optimizers.SGD(learning_rate=LEARNING_RATE), loss=LOSS, metrics=['accuracy']) model.fit(x, y, epochs=EPOCHS) print('Finished Training') #print(model.get_weights()) # # ★選択肢2★ トレーニング(カスタマイズ版) # LEARNING_RATE = 0.03 # 学習率: 0.03 # EPOCHS = 100 # エポック数: 100 # # criterion = tf.keras.losses.MeanSquaredError() # # optimizer = tf.keras.optimizers.SGD( # learning_rate=LEARNING_RATE) # # def train_step(train_X, train_y): # training = True # K.set_learning_phase(training) # tf.keras内部にも伝える # with tf.GradientTape() as tape: # pred_y = model(train_X, training=training) # loss = criterion(pred_y, train_y) # gradient = tape.gradient(loss, model.trainable_weights) # optimizer.apply_gradients(zip(gradient, model.trainable_weights)) # return loss.numpy() # # for i in range(EPOCHS): # loss_result = train_step(x, y) # print(i, ':', loss_result) # # print('Finished Training') # #print(model.get_weights())
ちなみに試すときは、Colabスクラッチパッドが便利ですよ。
「とにかくコピペだけでサクッと動かせるニューラルネットワークのコードが欲しい」というときがあるのだけど、検索してもなかなか出てきません。そこで、とにかくコピペだけ試せる最小コードを作りました。PyTorch版です。
# ライブラリのインポート import torch import torch.nn as nn import torch.optim as optim # 入力データ NUMBER_OF_DATA = 64 INPUT_FEATURES = 1000 HIDDEN_FEATURES = 100 OUTPUT_FEATURES = 10 x = torch.randn(NUMBER_OF_DATA, INPUT_FEATURES) y = torch.randn(NUMBER_OF_DATA, OUTPUT_FEATURES) #x.size() # torch.Size([64, 1000]) #y.size() # torch.Size([64, 10]) # モデルの定義 model = nn.Sequential( nn.Linear(INPUT_FEATURES, HIDDEN_FEATURES), nn.ReLU(), nn.Linear(HIDDEN_FEATURES, OUTPUT_FEATURES)) # トレーニング LEARNING_RATE = 0.03 # 学習率: 0.03 EPOCHS = 100 # エポック数: 100 criterion = nn.MSELoss() optimizer = optim.SGD( model.parameters(), lr=LEARNING_RATE) def train_step(train_X, train_y): model.train() pred_y = model(train_X) optimizer.zero_grad() loss = criterion(pred_y, train_y) loss.backward() optimizer.step() return loss.item() for i in range(EPOCHS): loss_result = train_step(x, y) print(i, ':', loss_result) print('Finished Training') #print(model.state_dict())
ちなみに試すときは、Colabスクラッチパッドが便利ですよ。