
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create machine learning models
/ 50
Use the model
/ 50
このラボでは、ML の基本的な「Hello World」を学びます。ここでは、Java や C++ などの言語で明示的なルールをプログラミングするのではなく、数値間の関係を特定するルールを推論するために、データでトレーニングされるシステムを構築します。
このラボでは、次の方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
フィットネス トラッキング用のアクティビティ認識を実行するシステムの構築に関する問題を考えてみましょう。人の移動速度を認識して、その速度に基づき、以下の条件を使用してアクティビティを推論します。
ゴルフ アクティビティの検出に役立つプログラムのコードを書き込むのは、非常に難しい作業です。
しかし、ML を使用することでこの問題を解決できます。
前のセクションでは、ユーザーのフィットネス アクティビティを判別しようとしたときに問題が発生しました。ゴルフのようなアクティビティを検出するには条件をより複雑にする必要があるため、より多くのコードを書き込めばよいというものではありません。
次の図のように、従来の方法でアプリケーションを構築するとします。
ルールはプログラミング言語で表現します。ルールがデータに適用されると、プログラムから回答が提供されます。アクティビティ検出の場合、回答を導き出すために、ルール(アクティビティの種類を定義するために書き込んだコード)がデータ(人の移動速度)に適用されます。回答とは、ユーザーのアクティビティ ステータス(ウォーキング中、ランニング中、サイクリング中など)を判別する関数の戻り値です。
ML でも、軸が異なるだけで、このアクティビティを検出するプロセスは非常に似ています。
ルールを定義し、それらをプログラミング言語で表現するのではなく、通常は「ラベル」と呼ばれる回答をデータとともに提供します。それを受け、機械が回答とデータの関係を特定するルールを推論します。たとえば、ML のコンテキストでは、アクティビティ検出シナリオは次のようになります。
大量のデータを収集し、ラベルを付けて、「このデータならウォーキング」、「このデータならランニング」というように分類します。それにより、コンピュータが、特定のアクティビティを示す明確なパターンを特定するルールをデータから推論できるようになります。
ML は、このシナリオでプログラミングに代わる手法となるだけでなく、従来のルールベースのプログラミング アプローチでは実現できなかった可能性があるゴルフなどの新たなシナリオを切り開く可能性があります。
従来のプログラミングでは、通常、コードがプログラムと呼ばれるバイナリにコンパイルされます。ML では、データとラベルから作成するアイテムをモデルと呼びます。
再び下の図を見てみましょう。
上の図の結果がモデルであり、実行時には下のように使用されます。
モデルにデータを渡すと、モデルはトレーニングに基づいて推論したルールを使用して「このデータはウォーキングのようだ」「このデータはサイクリングのようだ」のような予測を行います。
このラボでは、あらゆる ML シナリオで使用できる要素で構成された非常にシンプルな「Hello World」モデルを構築します。
Google Cloud コンソールのナビゲーション メニュー()で、[Vertex AI] > [ワークベンチ] の順にクリックします。
Workbench インスタンスの JupyterLab インターフェースが新しいブラウザタブで開きます。
ランチャー メニューの [その他] から、[ターミナル] を選択します。
ご利用の Python 環境が構成済みかどうかを確認します。ターミナルで次のコマンドをコピーして貼り付けます。
出力例:
pip3
をアップグレードするには、ターミナルで次のコマンドを実行します。Pylint は、Python コード内のエラーをチェックし、Python ソースコードの構文およびスタイル上の問題を強調表示するツールです。
pylint
パッケージをインストールします。requirements.txt
ファイルのラボに必要なパッケージをインストールします。これで環境が設定されました。
以下の数値のセットについて考えてみましょう。数値間の関係がわかりましたか?
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
左から右に見ていくと、X 値は 1 ずつ増加し、対応する Y 値は 3 ずつ増加していることがわかります。つまり、関係は Y=3X に特定の値を足すか、引いた式になるはずです。
そこで、X が 0 であるときに、対応する Y の値が 1 であることを確認します。
これら 2 つの値から、関係は Y=3X+1 であることがわかります。
コードを使用してニューラル ネットワークと呼ばれるモデルをトレーニングし、データのパターンを見つけるプロセスは、上記とほぼ同じです。
データを使用して、ニューラル ネットワークをトレーニングしましょう。X と Y のセットを提供することで、それらの関係を特定できるようになります。
ワークベンチの左側にある + アイコンをクリックして、新しいランチャーを開きます。
ランチャー メニューの [ノートブック] から、[Python3] を選択します。
新しい Jupyter ノートブックが表示されます。Jupyter ノートブックの使用方法の詳細については、Jupyter Notebook Documentation をご覧ください。
logging
と google-cloud-logging
をインポートして構成します。最初のセルに、以下のコードを追加します。tensorflow
をインポートします。使いやすいよう、名前を tf
にします。最初のセルに次のコードを追加します。numpy
をインポートします。使いやすいよう、名前を np
にします。最初のセルに次のコードを追加します。セルを実行するため、[実行] ボタンをクリックするか、Shift + Enter キーを押します。
ノートブックを保存します。[ファイル] > [保存] をクリックします。ファイル名を model.ipynb
にして、[OK] をクリックします。
次に、モデルのトレーニングに使用されるデータを準備します。このラボでは、前に使用した 6 つの X と 6 つの Y を使用します。
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
ご覧のように、X と Y の関係は Y=3x+1 であるため、たとえば X = 1 なら Y = 4 になります。
numpy
という Python ライブラリでは、データ提供の事実上の標準方式となっている配列型データ構造が多数提供されています。これらを使用するには、np.array([])
を使用して、numpy
で値を配列として指定します。
このセクションでは、TensorFlow を使用してモデルを設計します。
ニューラル ネットワークと呼ばれる ML アルゴリズムを使用して、モデルをトレーニングします。できるだけシンプルなニューラル ネットワークを作成します。レイヤは 1 つで、そのレイヤに 1 つのニューロンがあります。ニューラル ネットワークの入力は、一度に 1 つの値のみです。そのため、入力の形状は [1] にする必要があります。
次に、ニューラル ネットワークをコンパイルするためのコードを書き込みます。ここでは、損失
とオプティマイザー
の 2 つの関数を指定する必要があります。
ML で数学計算を数多く目にしてきた人は、通常ならここでそれを使用しますが、tf.keras
が数学計算を関数内にうまくカプセル化してくれます。
事前の検証により、数値の関係が y=3x+1
であることがわかっています。
この関係を学習しようとするコンピュータは、たとえば y=10x+10
と推測します。損失
関数は、推測された回答を既知の正しい回答と比較し、推測の精度を測定します。
tf.keras
で使用できるさまざまな種類の損失関数の詳細については、Module: tf.keras.losses ドキュメントをご覧ください。y=5x+5
と推測されます。この推測は依然として精度が低いですが、正しい結果に近づいています(損失が減少しています)。tf.keras
で使用できるさまざまな種類のオプティマイザーの詳細については、Module: tf.keras.optimizers ドキュメントをご覧ください。上のコード スニペットで、損失には mean_squared_error
、オプティマイザーには stochastic gradient descent (sgd)
を使用するようモデルに指示します。これらの数学計算は、まだ理解する必要はありませんが、役に立つことはわかるはずです。
ニューラル ネットワークをトレーニングして X と Y の関係を「学習」させるには、model.fit
を使用します。
この関数により、推測、その精度(損失)の測定、オプティマイザーを使用した推論の再実行などのループでモデルをトレーニングします。指定したエポックの数(このラボでは 500)に達するまで、このプロセスが繰り返されます。
上のコードでは、model.fit
により、指定されたエポック数に達するまでモデルのトレーニングが繰り返されます。
model.fit
の詳細については、tf.keras.Model ドキュメントの fit セクションをご覧ください。この時点で、ファイルは次のようになります(コードは 2 つの異なるセルに含まれます)。
スクリプトの準備ができました。実行してどうなるか見てみましょう。
[実行] ボタンをクリックするか、Shift + Enter キーを押して、ノートブックの 2 つ目のセルを実行します。
出力を確認します。スクリプトで、各エポックの損失が印刷されることを確認します。出力は、ここに示されているものと若干異なる可能性があります。
e-
が付いた数は、指数が負の科学的記数法で表示されています。エポックをスクロールすると、損失値が最初の数エポックでは非常に大きいものの、ステップごとに小さくなっていることがわかります。たとえば、次のようになります。
トレーニングが進むと、損失が非常に小さくなります。
トレーニングが完了するまでには損失が極めて小さくなり、モデルによる数値間の関係の推論精度が非常に向上したことが示されています。
おそらく 500 のエポックすべてを確認する必要はないので、別の値を試してみましょう。この例を見ると、損失は 50 エポックのみで非常に小さくなるため、値は 50 で十分かもしれません。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
X と Y の関係を学習するよう、モデルをトレーニングしました。
model.predict
メソッドを使用して、モデルのトレーニング中には出現しなかった X に対する Y を割り出すことができます。たとえば、X = 10 である場合の Y はどうなるでしょうか。
cloud_logger
に渡されます。Ctrl+S キーを押すか、[ファイル] -> [保存] をクリックして、ノートブックを保存します。
3 つ目のセルを実行するため、[実行] ボタンをクリックするか、Shift + Enter キーを押します。
Y 値がトレーニング ログ(エポック)の後に表示されます。
出力例:
Y=31 になると思っていたかもしれません。しかし、実際はそれをわずかに上回る値(31.005917)でした。なぜでしょう。
答え: ニューラル ネットワークは確率を扱います。X と Y の関係が Y=3X+1 である可能性が非常に高いと計算されました。しかし、6 つのデータポイントだけではその確証がありません。そのため、10 に対する結果は 31 に非常に近くなりますが、必ずしも 31 にはなりません。
ニューラル ネットワークでは、このパターンが繰り返されます。ほとんどの場合は確実性ではなく確率を扱い、特に分類に関しては、確率に基づいて結果を割り出すためにコーディングを少しだけ行います。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これで完了です。このラボでは、TensorFlow を使用して独自の ML モデルを作成、トレーニング、テストしました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 9 月 16 日
ラボの最終テスト日: 2024 年 9 月 16 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one