機械学習 (ML) は、ソフトウェア開発の世界を急速に変革しました。 TensorFlow や PyTorch などのライブラリのおかげで、最近まで Python は ML 分野で主流の言語でした。しかし、TensorFlow.js の登場により、JavaScript 開発者は、使い慣れた構文を使用して、ブラウザーまたは Node.js で直接モデルを構築およびトレーニングし、エキサイティングな機械学習の世界に飛び込むことができるようになりました。
このブログ投稿では、JavaScript を使用して機械学習を始める方法を説明します。 TensorFlow.js を使用して単純なモデルを構築およびトレーニングする例を見ていきます。
TensorFlow.js は、機械学習モデルを完全に JavaScript で定義、トレーニング、実行できるオープンソース ライブラリです。ブラウザーと Node.js の両方で実行できるため、幅広い ML アプリケーションに非常に多用途です。
TensorFlow.js が魅力的な理由をいくつか挙げます:
始め方を見てみましょう!
コードに入る前に、TensorFlow.js をインストールする必要があります。 <script> を介してプロジェクトにこれを含めることができます。 tag または npm (環境に応じて)。</p> <h3> ブラウザのセットアップ </h3> <p>ブラウザで TensorFlow.js を使用するには、次の <script> をインクルードするだけです。 HTML ファイル内のタグ:<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script> </pre><div class="contentsignin">ログイン後にコピー</div></div> <h3> Node.jsのセットアップ </h3> <p>Node.js 環境の場合は、npm:<br> を使用してインストールできます。 </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">npm install @tensorflow/tfjs </pre><div class="contentsignin">ログイン後にコピー</div></div> <h2> 2. 単純なニューラル ネットワーク モデルの構築 </h2> <p>基本的な線形関数 y = 2x - 1 の出力を予測する単純なニューラル ネットワークを作成しましょう。このモデルの作成とトレーニングには TensorFlow.js を使用します。</p> <h3> ステップ 1: モデルを定義する </h3> <p>まず、1 つの高密度レイヤーを含むシーケンシャル モデル (レイヤーの線形スタック) を定義します。<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Import TensorFlow.js import * as tf from '@tensorflow/tfjs'; // Create a simple sequential model const model = tf.sequential(); // Add a single dense layer with 1 unit (neuron) model.add(tf.layers.dense({units: 1, inputShape: [1]})); </pre><div class="contentsignin">ログイン後にコピー</div></div> <p>ここでは、1 つの高密度レイヤーを持つモデルを作成しました。この層には 1 つのニューロン (単位: 1) があり、単一の入力特徴 (inputShape: [1]) が必要です。</p> <h3> ステップ 2: モデルをコンパイルする </h3> <p>次に、オプティマイザと損失関数を指定してモデルをコンパイルします。<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Compile the model model.compile({ optimizer: 'sgd', // Stochastic Gradient Descent loss: 'meanSquaredError' // Loss function for regression }); </pre><div class="contentsignin">ログイン後にコピー</div></div> <p>小規模モデルに効果的な確率的勾配降下 (SGD) オプティマイザーを使用します。損失関数 meansSquaredError は、このような回帰タスクに適しています。</p> <h3> ステップ 3: トレーニング データを準備する </h3> <p>ここで、関数 y = 2x - 1 のトレーニング データを作成します。TensorFlow.js では、データはテンソル (多次元配列) に保存されます。トレーニング データを生成する方法は次のとおりです:<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Generate some synthetic data for training const xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]); // Inputs (x values) const ys = tf.tensor2d([1, 3, 5, 7, 9], [5, 1]); // Outputs (y values) </pre><div class="contentsignin">ログイン後にコピー</div></div> <p>この場合、入力値 (0、1、2、3、4) を持つテンソル xs と、y = 2x - 1 を使用して計算された値を持つ対応する出力テンソル ys を作成しました。</p> <h3> ステップ 4: モデルをトレーニングする </h3> <p>これで、データに基づいてモデルをトレーニングできます。<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Train the model model.fit(xs, ys, {epochs: 500}).then(() => { // Once training is complete, use the model to make predictions model.predict(tf.tensor2d([5], [1, 1])).print(); // Output will be close to 2*5 - 1 = 9 }); </pre><div class="contentsignin">ログイン後にコピー</div></div> <p>ここでは、モデルを 500 エポック (トレーニング データの反復) トレーニングします。トレーニング後、モデルを使用して入力値 5 の出力を予測します。これは 9 (y = 2*5 - 1 = 9) に近い値を返すはずです。</p> <h2> 3. ブラウザでのモデルの実行 </h2> <p>このモデルをブラウザで実行するには、TensorFlow.js ライブラリと JavaScript コードを含む HTML ファイルが必要です。<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>TensorFlow.js Example</title> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script> <script defer src="app.js"></script>