フロントエンド開発者にとって、機械学習を理解するのは難しい場合があります。私は機械学習を勉強し始めてまだ間もなく、この分野では初心者です。この記事では、私自身の理解に基づいていくつかの概念を説明してみたいと思います。 ただし、既存の AI モデルを使用する場合、機械学習に関する深い知識は必要ありません。 Keras、TensorFlow、TensorFlow.js などの既存のツールを使用できます。ここでは、AI モデルを作成し、TensorFlow.js でいくつかの複雑なモデルを使用する方法について説明します。 深い知識は必要ありませんが、基本的な概念をいくつか説明させてください。 モデルとは何ですか?あるいは、もっと良い質問は、「現実とは何か?」です。はい、これには答えるのが難しいので、理解するために質問を単純化する必要があります。 現実を簡略化して表現する 1 つの方法は、モデルを使用することです。つまり、世界地図やチャートなど、無限の数のモデルとして考えることができます。
機械が関与しないモデルは私たちにとって理解しやすいです。たとえば、バルセロナの住宅の部屋数が変わると価格がどう変化するかを表すモデルを作成するとします。 まず、いくつかのデータを収集する必要があります。
次に、各軸が 1 つのパラメータに対応する 2D グラフを使用して、これら 2 つのデータを表示します。 そして...ドゥアン!これで、線を引いて、6部屋以上の家の価格を予測できるようになりました。 このモデルは線形回帰と呼ばれ、機械学習における最も単純なモデルの 1 つです。 もちろん、このモデルは十分ではありません。
最初の問題については、100 万のデータを追加するなど、サンプル数を増やすことで解決できます。 2 番目の質問では、軸をさらに追加できます。 2D グラフィックスでは直線を描くことができ、3D 座標では平面を描くことができます。 しかし、4D や 1000000D など、3D を超える状況にはどのように対処すればよいのでしょうか? 私たちの脳は多次元のグラフを視覚化することはできませんが、幸いなことに、数学を使用して超平面を計算することでこれを処理することができ、ニューラル ネットワークはそのための優れたツールです。 ちなみに、TensorFlow.js を使用するのに数学の専門家である必要はありません。 ニューラルネットワークとは何ですか?ニューラル ネットワークを理解する前に、まずニューラル ネットワークとは何かを理解しましょう。 現実世界では、ニューロンは次のようになります。 神経の最も重要な部分は次のとおりです。
機械学習におけるニューラル ネットワークは (簡略化して) 次のようになります。
活性化関数の使用は非常に便利であり、ニューラル ネットワークの本質です。活性化関数がなければ、ニューラル ネットワークは十分な知能を発揮できません。その理由は、ネットワーク内に多数のニューロンがあっても、ニューラル ネットワークの出力は常に線形回帰となるためです。非線形問題を解決するには、この独立した線形回帰を非線形回帰に変換する何らかのメカニズムが必要です。 これらの活性化関数のおかげで、これらの線形関数を非線形関数に変換できます。 モデルのトレーニング上記の 2D 線形回帰の例では、グラフ上に線を描くだけで、新しいデータの予測を開始できました。しかし、「ディープラーニング」の概念は、ニューラルネットワークにこの線を描くことを教えることです。 単純な線を描くには、ニューロンが 1 つある非常に単純なニューラル ネットワークだけが必要ですが、他のモデルでは、2 セットのデータを分類するなど、はるかに複雑な処理を実行します。この場合、「トレーニング」では次の画像の描き方を学習します。 これは 2D のみなので、それほど複雑ではありません。 各モデルは世界であり、これらすべてのモデルのトレーニングの概念は似ています。まずランダムな線を描き、それを反復アルゴリズムで改善し、各サイクルでエラーを修正します。この最適化アルゴリズムは、勾配降下法とも呼ばれます。同様の概念を持つ、SGD や ADAM などのより複雑なアルゴリズムもあります。 勾配降下法を理解するには、各アルゴリズム (線形回帰、ロジスティック回帰など) がこれらのエラーを測定するための異なるコスト関数を持っていることを知っておく必要があります。 コスト関数は常にある点に収束し、凸または非凸になることがあります。最終的な収束点は 0% の誤差で見つかり、この点に到達することが私たちの目標です。 しかし、勾配降下アルゴリズムを使用する場合、ランダムなポイントから開始しますが、それがどこにあるかはわかりません。自分が山の上にいて、完全に目が見えず、一歩一歩山を下りて頂上まで行かなければならないと想像してください。地形が複雑な場合(非凸関数など)、降下プロセスはより複雑になります。 勾配降下法アルゴリズムが何であるかについては詳しく説明しません。覚えておかなければならないのは、これは AI モデルをトレーニングして予測のエラーを最小限に抑えるために使用される最適化アルゴリズムであるということです。このアルゴリズムでは、行列乗算を計算するために時間と GPU が必要です。通常、最初の実行ラウンドで収束点に到達するのは難しいため、学習率などのハイパーパラメータを調整したり、正規化を追加したりする必要があります。 勾配降下法を繰り返した後、収束点に非常に近い点に到達し、エラー率は 0% に近くなりました。この時点で、モデルは正常に作成され、予測を開始できます。 TensorFlow.jsを使用してモデルをトレーニングするTensorFlow.js は、ニューラル ネットワークを簡単に作成する方法を提供します。 まず、LinearModel クラスを作成し、trainModel メソッドを追加します。 このタイプのモデルでは、モデル トポロジが分岐やスキップのない単純なスタックである場合など、1 つのレイヤーの出力が次のレイヤーの入力となるシーケンシャル モデルを使用します。 trainModel メソッド内でレイヤーを定義します (線形回帰問題には 1 つだけ使用すれば十分です)。
このクラスの使用方法:
トレーニング後、予測を開始できます。 TensorFlow.js を使用した予測予測の部分は通常簡単です。モデルのトレーニングにはいくつかのハイパーパラメータを定義する必要がありますが、予測を行うのは簡単です。このメソッドを LinearRegressor クラスに追加します。
さて、コードで予測メソッドを使ってみましょう
このコードはオンラインで実行できます: https://stackblitz.com/edit/linearmodel-tensorflowjs-react TensorFlow.jsでトレーニング済みモデルを使用するモデルの作成方法、トレーニング データの正規化、すべてのハイパーパラメータの正しい選択などを学習することが最も難しい部分です。初心者で、いくつかのモデルを試してみたい場合は、事前トレーニング済みのモデルを使用できます。 TensorFlow.js で使用できるモデルは多数あり、TensorFlow または Keras を使用してモデルを作成し、それを TensorFlow.js にインポートすることができます。 たとえば、posenet モデル (リアルタイムの人間のポーズ シミュレーション) を使用して、次のような楽しいことができます。 コードは https://github.com/aralroca/posenet-d3 から入手できます。 使い方はとても簡単です:
poses 変数は次の JSON ファイルにあります。
このモデルだけで、どれだけ面白いことができるか想像してみてください。
上記のサンプルコードは次の場所にあります: https://github.com/aralroca/fishFollow-posenet-tfjs KerasからのモデルのインポートTensorFlow.js には外部からモデルをインポートできます。次の例では、数字認識に Keras モデルを使用します (ファイル形式は h5)。これを実現するには、tfjs_converter を使用する必要があります。
次に、変換ツールを使用します。
これで、モデルを JS コードにインポートできます。
わずか数行のコードで、Keras の数字認識モデルを使用できます。もちろん、キャンバスを追加して数字を描画し、その画像をキャプチャして数字を認識するなど、さらに興味深いロジックを追加することもできます。 コード: https://github.com/aralroca/MNIST_React_TensorFlowJS なぜブラウザで AI を実行するのでしょうか?ハードウェアが良好でない場合、ブラウザ上でモデルをトレーニングすることは非常に非効率的になる可能性があります。 TensorFlow.js は WebGL インターフェースを使用してトレーニングを高速化しますが、それでも TensorFlow Python バージョンよりも 1.5 ~ 2 倍遅くなります。 しかし、TensorFlow.js が登場する前は、API のやり取りなしにブラウザで機械学習モデルを使用することは基本的に不可能でした。これで、アプリケーションでモデルをオフラインでトレーニングして使用できるようになりました。また、サーバーとやり取りする必要がないため、予測が速くなります。 もう 1 つの利点は、これらの計算をブラウザで実行すると、サーバーのオーバーヘッドが削減され、コストが節約されることです。 結論は
|
<<: 電子商取引用に作成されたナレッジグラフは、ユーザーのニーズをどのように感知するのでしょうか?
>>: AI スタートアップの品質を測定するにはどうすればよいでしょうか?
現在、ディープラーニングはデータサイエンスの分野で最も人気のあるスキルとなっています。ディープラーニ...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
マルチエージェント経路探索 (MAPF) は、人工知能、ロボット工学、理論計算機科学、実践的オペレー...
翻訳者 |李睿レビュー | Chonglou人工知能と機械学習は、ヘルスケア、金融、エネルギー、輸送...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
たとえば、ボットに請求書を分析してもらい、それを社内の適切な連絡先に送信させたいとします。十分簡単そ...
顔認識は、顔の特徴に基づいて人物を識別する生体認証技術です。カメラまたはビデオカメラを使用して、顔を...
最近、南京、江蘇省、天津などではAI顔認識技術の使用を禁止し始めている。 11月末、南京市のある男性...
9月26日、市場調査会社Canalysが発表した最新レポートによると、現在のAIの波の中で、企業や消...
5月25日、2018年中国国際ビッグデータ博覧会人工知能世界大会決勝戦が予定通り貴陽で開催され、世界...
黄仁訓は未来について次のように予言した。コンピューティング技術は10年ごとに100万倍に進歩します。...