optimizerプロパティに指定する値は最適化アルゴリズムと呼ばれます。言い換えると、損失関数を理想的にはゼロにするための算出方法を指定します。 これまで見てきた損失値のグラフでは、値がうまく減少していきましたが、そこ […]
続きを読む月: 2018年9月
6_4 loss : 誤差関数
loss(誤差関数)は、自分の方法でモデルが出した「推測」値と正解の教師データと比べて、適合しなさ具合を表す数値を返します。 前のあやめデータのlossには’binaryCrossentropy’ […]
続きを読む6_3 モデルの中身 その2
tf.Sequentialのモデルにレイヤーを追加したので、コンパイルに移ります。 const learningRate = 0.01; const optimizer = tf.train.adam(learningR […]
続きを読む6_2 活性化関数
モデルにレイヤーを追加するとき、tf.layers.dense()関数に渡すオブジェクトのactivationプロパティの値に指定するものを活性化関数と言います。活性化関数は次のレイヤーに渡す値を整える働きを持っています […]
続きを読む6_1 モデルの中身 その1
「5_1_2 モデルの構築」で示したbuildModel()関数のコードを上から順に見ていきます。 const model = tf.sequential(); tf.sequential()関数はtf.Sequenti […]
続きを読む6 モデルの本陣
機械学習は微小な数値の連続で、そこで扱われる用語や概念も、大学で数学を学ばなかった人には、非常に難解です。 TensorFlow.jsのそもそもの狙いには、こうした難解さをモデル内部に隠し、ハイレベルなAPIで優しく扱え […]
続きを読む5_1_6 推論 その3 答え合わせ
モデルには、[5.1, 3.5]や[4.9, 3.0]、[4.7, 3.2]といったsatosaData は[1,0]で、 [7.0, 3.2]や[6.4, 3.2]、[6.9, 3.1]といったversicolorDa […]
続きを読む5_1_5 推論 その2 Tensor.argMax( axis? )メソッド
tf.Sequentialのpredict()が返すtf.Tensorオブジェクトは、推論結果の数値と結びついており、分類の場合、数値は確率と見なすことができます。 // 結果は確率の配列 predictOut.prin […]
続きを読む5_1_4 推論 その1
モデルの訓練が終わったら、Promiseのthen()メソッドに渡される無名関数で、<ul>要素のクリックに関するイベントリスナーを設定します。 console.log(‘モデルの訓練完了’); // < […]
続きを読む5_1_3 モデルの訓練
start()関数では、buildModel()の後、train(model, xsTrain, ysTrain, xsValidation, ysValidation);を実行しているので、次のtrain()関数が呼び […]
続きを読む5_1_2 モデルの構築
次は、ゼロから構築しようとすると相当な知識と経験が必要になる、「適切な」モデルの作成です。機械学習やディープラーニングでは、モデルが自動的に学習し、推論を立ててくれますが、そこまで行くには、優秀なモデルを人間が試行錯誤し […]
続きを読む5_1_1 データの取得
何はなくともデータを準備する必要があります。今回使用するのは、次のようなデータです。前述したように、分かりやすくするために、サンプル数を少なくしています。 JavaScriptコードでは、訓練用のデータを8個ずつ配列に入 […]
続きを読む5_1 2特徴量2クラス
ここからは、いよいよ「機械学習」っぽくなっていきます。 2特徴量2クラスというのは、あやめデータの場合でいうと、たとえば、がく片の長さと幅の2つの特徴量から、satosaとversicolorに分けることです。出来の良い […]
続きを読む5_1 1特徴量2クラス
扱おうとするデータの特徴を数値化したものを特徴量と言います。あやめの例で言うと、がく片や花びらの長さと幅の数値です。1特徴量2クラスとは、1つの特徴量で2つに分類することです。 たとえば、2m以上はある大きな木と1mない […]
続きを読む5 あやめの分類
機械学習の入門の例として、あやめの花の分類があります。これは、あやめの品種であるsatosaとversicolor、virginicaそれぞれのがく片の長さと幅、花びらの長さと幅を持つデータを使ってモデルを訓練し、未知の […]
続きを読む5_2_4 epochsはいくつがよいのか?
今の簡単な例では、データ数は訓練用と教師用で25個ずつですが、通常はもっともっと多い方がモデルの推論の精度は高まります。またデータの品質も重要で、これはどう見ても異常だ、と思えるデータは除く必要があります。 機械学習で重 […]
続きを読む5_2_3 TensofFlow.jsのモデルの作成と訓練
今行おうとしているのは、[22,23,23,…,34,35,35]という最高気温と、[303,313,323,…,463,443,483]と並ぶビールの売上本数のデータから、では、統計が取られてい […]
続きを読む5_2_2 グラフの描画関連
グラフの描画には、Plotlyライブラリを使用しています。Plotlyには、適切な形式でプロットしたい横軸と縦軸のデータを配列で渡すだけです。 // Plotlyを使ってグラフを描く const plot = async […]
続きを読む5_2_1 CSVファイルの読み込み
TensorFlow.jsに限らず、機械学習ではまずデータが必要です。このWebアプリでは、前出のエクセルファイルからCSVファイルを書き出して、それを読み込みます。 ブラウザで外部ファイルを読み込むには、ユーザーが読み […]
続きを読む5_2 TensorFlow.jsでビール売上数を予測する
下図は、エクセルで行った推測をTensorFlow.jsで行った結果です。 右は損失値の変化を表すグラフで、2500回も訓練しています。エクセルの推測は一瞬で終わりますが、TensorFlow.jsでは相当回数、訓練が必 […]
続きを読む5_1 エクセルでビール売上数を予測する
最高気温が高いほどビールは多く売れるだろう、という相関関係は、エクセルの機能を使うと、実に簡単に右上がりの直線で表すことができます。 こういう統計があったとすると(実際には架空のデータです)、エクセルのグラフ機能で、実に […]
続きを読む5 ビール売上本数の予測
次は少し実践的な例です。その日の最高気温とビールの売上本数をデータとしてTensorFlow.jsのモデルに与えて訓練し、データにはない最高気温が30度の日に、ビールは何本売れるかを推測させる試みです。 最高気温と売上本 […]
続きを読む4_2 同じ問題に対して、異なるTensorFlow.jsモデルを試す
まず、前の「3_1_2 モデルの作成」で使ったモデルで試してみます。 const model = tf.sequential(); model.add(tf.layers.dense({units: 1, inputSh […]
続きを読む4_1 TensorFlow.jsで実装した論理ゲート
以下がTensorFlow.jsで実装した論理ゲートの実行画面です。結果は、概ね良好のように思えます。 全コードを以下に示します。 <!doctype html> <html lang="ja […]
続きを読む4 論理ゲートをTensorFlow.jsで実装する
機械学習の入門書などを見ていると、「論理ゲート」というものがよく取り上げられています。論理ゲートというのは、元は電子回路に用いられる論理で、オンかオフの2つの入力があった場合、それをオンかオフのどちらで出力するかを決める […]
続きを読む