ニューラルネットワークというとかなり派手に聞こえます。 Neuralというと脳を思い浮かべます。 どれも複雑です。 ただし、線形回帰に精通していれば、ニューラル ネットワークが何を行うかを理解するために必要な構成要素が得られます。
ニューラル ネットワーク (NN) は一般に次のように分類されます。教師あり機械学習(ただし、#AutoEncoders と同様に、ラベル付きデータなしで驚くべきことを実行できるタイプの NN もあります)。 これらは一連の入力 (何かを予測するために使用する一連の変数) を受け取り、結果を予測します。
これは線形回帰によく似ています。
線形回帰では、1 つ以上の入力を受け取り、次の式を使用して連続出力を予測します。
ここで、Y は予測したいものであり、
はあなたの入力です。 たとえば、年齢、性別、給与、家賃に基づいて、ビデオ ゲームに年間で費やす金額を予測したい場合があります。

次に回帰させます学ぶ係数の値 (これを言うのはばかげているように思えるかもしれませんが、我慢してください)。
しません教えて回帰では係数が何であるかがわかりますが、代わりに次の方法を教えます。学ぶ彼ら。 単純なケースでは、回帰に最小二乗法を使用するように依頼することがよくあります。学ぶ最適な係数は何か。
本質的に、回帰に次のように与えます。構造モデルの場合、および方法モデル内の値を学習するため。 次に、学習を開始します。
ニューラル ネットワークを構築するときは、構造そして方法学習用ですが、多くの場合、回帰に使用する構造や方法とは少し異なって見えます。
回帰の例
構造
ノード。 ニューラルネットワークの使用ノード値を保持するコンテナとして。 これらのノードには、接続それらの間の。 グラフィックで描くと、ロリポップをたくさん並べたように見えます。
接続は、接続を使用して次のノードに移動するときに、1 つのノードの値に適用される数学的計算を表します。
ビデオ ゲームの回帰をニューラル ネットワークとして構築したい場合は、それが可能です。 その構造は次のようになります。
レイヤー。 私たちのビデオ ゲーム NN には 2 つの層があります。入力NN に予測変数として年齢、性別、給与、家賃を与えるレイヤーと、出力NN から予測を取得するレイヤー。
2 つの層間の接続には重みが含まれており、それらを重みと呼ぶことができます。メートル、 n、pそしてkこれを、入力層から出力層に進むときに各変数に適用します。 そうすると年齢は何倍にもなりますメートル、によるセックスn 、など、これらの積はすべて出力ノードにまとめて追加されます。
ニューラルネットワークはまた、バイアス(b) to を出力ノードの値に変換します。 バイアスは単なるスカラー (1、-7、または 42 などの通常の数値) です。
構築したニューラル ネットワーク構造に基づいて、出力ノードは次の式に基づいた結果を返します。
これは上で見た回帰式と同じです。
学習方法
線形回帰を行う場合、係数の値を見つけて計算する必要があります。 (b、m、n、p、そしてk ) モデル構造を指定した後。 多くの場合、係数を見つけるために最小二乗法を使用します。
つまり、最小二乗法は、モデルの予測と実際のデータの間の二乗誤差の合計を最小化する係数を見つけます。
数学的に言えば、この関数を最小化します。
どこ
はデータポイントの実際の値であり、
は、そのデータ ポイントに対するモデルの予測です。
損失。 その気になれば、この関数を私たちの関数と呼ぶこともできます損失関数。 そして、それはまさにニューラル ネットワークを操作するときに呼ばれるものです。 損失関数は、どのような現象が起こるかを数値的に測定します。良い私たちのモデルはやっています。 損失が小さい場合、予測はかなり正確です。 大きい場合はそれほど熱くありません。 優れたモデルを構築する際の目標は、常に損失関数を最小限に抑えること (したがってモデルのパフォーマンスを最大化すること) です。
そして、平均二乗誤差(元)最小二乗法から) は多くのモデルにとって適切な選択ですが、他にも多くの選択肢があります。 ニューラル ネットワークはあらゆる種類の構造を持つことができ、異なるデータ/構造は他の種類の損失関数から恩恵を受ける可能性があります。
"学ぶ。"損失関数を最小化したいことはわかっており、ニューラル ネットワークの構築に使用したデータと構造はありますが、実際には最小化を「実行」する必要があります。 ここで、ニューラル ネットワークが回帰モデルから逸脱し始めます。
より単純な回帰では、線形代数、幾何学、および通常の代数のいずれかを使用して、正確な係数を解決する非常に簡単で迅速な数学的方法があります。 しかし、ニューラル ネットワークでは少し異なるアプローチが取られます。 ニューラル ネットワークでは、損失関数を最小化する (そしてモデルを最適化する) 値を見つけるために反復的なアプローチがよく使用されます。 基本的に、反復の各ステップで「最良の」答えに一歩近づけようとします。
多くのツールやチュートリアルでは、何らかの形式の勾配降下法。 従来の勾配降下法は JMP で使用されるものではないため、技術的な詳細については多くの時間を費やすつもりはありませんが、一般的な考え方としては、次のようなものがあります。勾配損失関数の値 (山と谷のあるマップを考えてください)。高い点はモデルのパフォーマンスが低いことを表し、低い点は良好な最適なモデルのパフォーマンスを表します。
勾配降下を、この地図上で可能な限り低い地点に到達しようとしているハイカーとして想像してみてください。 一歩ごとに周囲を見回し、どの方向が最も急な下り坂であるかを判断し、その方向に進みます。 最終的には、最低点に達します。 ハイキングのたとえから戻ると、最低点は損失関数が最小化される一連のパラメーター (係数やバイアスなど) を表しており、したがってモデルは非常にうまく機能しています。
でJMPでは、NN を最適化するために少し異なる手法が使用されます。 一般的な勾配降下法を使用する代わりにメソッドでは、JMP は と呼ばれるものを使用します。 BFGSアルゴリズム(を表しません) BイグF穏やかにGアントS 、ロアルド・ダールファンには申し訳ありません)。 BFGS アルゴリズムは、勾配降下法と同様に、モデルを最適化するための手順を反復的に実行するのに役立ちますが、そのために異なる数学を使用します。
アルゴリズムが最終的な最低点 (勾配の谷の 1 つ) を見つけるまで待つ代わりに、JMP は検証セットを調べることによってモデルが最適化されているかどうかを判断します (これが、JMP が検証セットを必要とするか、検証セットの一部を保持する理由です。 NN を構築するときに、データが自動的に検証されるようになります)。 検証セットは、モデルの最適化に使用されないデータで構成されます。
JMP は検証セットで現在のモデルをテストします。 最低点に向けてさらに「ステップ」を実行しても、検証セットでのモデルのパフォーマンスが大幅に向上しない場合、JMP はモデルが最適化されているとみなします。 モデルの作成に使用されなかった新しいデータでモデルをテストすると、作成中のモデルが将来のデータでどのように動作するかを理解するのに役立ちます。 この方法は、最低点に向かうステップをより早く停止できるため、「早期停止」と呼ばれます。 これにより、多くの場合、モデルを迅速に最適化できます。
どの方法が使用されるかに関係なく、モデルが十分に最適化されているとみなされると、ニューラル ネットワーク内のパラメーターのすべての推定値が得られます。 ついに、何かを予測するために使用できる実用的なモデルが完成しました。
より複雑な構造
これで、ニューラル ネットワークの基本が理解できました。構造化された、そして彼らはどのようにして学ぶ。 ただし、すべてのニューラル ネットワークが上記の回帰のように見える必要があるわけではありません。 ニューラル ネットワークを使用すると、その構造をより柔軟に構築できるようになります。
複数のレイヤー。 ニューラル ネットでできることの 1 つは、レイヤーを追加することです。 回帰の例では、出力層に直接接続された入力層がありました。 ただし、それらの間に追加のレイヤーを挿入し、各レイヤーを次のレイヤーに接続することができます。
これは、入力データが出力層に到達する前に、より多くの接続 (したがって、より多くの計算) を通過することを意味します。 層と接続が増えるほど、近似できる関数がより複雑になります。
私たちがモデルを構築するとき、私たちは基本的に入力と出力の間に関係があると信じているのでそうします。 何か数学的な関数があるのですが、これは、すべての入力値を出力値に変換する方法を説明できます。 年齢、性別、給与、家賃に基づいてビデオゲームに費やした金額を推測するようなものです。
私たちが構築するモデル (これをそう呼ぶことにします) が完成することを願っています。 f*(x) ) に非常に近い (または近似的) f(x) 。 しかしf(x)かなり複雑なモデルになる可能性があります。 それは直線的な *あえぎ* ではないかもしれません! 追加のレイヤー (および後ほど説明するその他のトリック) により、作成するモデルをより複雑にすることができます。 もしf*(x)も複雑な場合、それに近いモデルを作成できる可能性が高くなります。 f(x) 。
入力層と出力層のノードの数はあらかじめ決められています。 入力層には変数 (機械学習でよく呼ばれる特徴) ごとに 1 つのノードがあり、出力層には予測する数値ごとに 1 つのノードがあります。 ただし、さらにレイヤー (隠れレイヤーと呼ばれます) を追加し始めると、任意の数のノードを選択できます。 ニューラル ネットワークの歴史の現時点では、それは科学というよりは芸術です。 各隠れ層に選択するノードの数については適切な経験則 (各層のノード数を徐々に減らすなど) はありますが、正確な答えはありません。
アクティベーション機能。 OK、一部のモデルが線形ではないことについてのコメントに戻りましょう (*また息を呑む*)。 ニューラルネットワークも採用しています活性化関数作成するモデルを非線形にするために、各ノードに追加します。
JMPプロには、活性化関数として TanH、Linear、Gaussian の 3 つのオプションがあります。 私たちの回帰モデルでは、線形活性化関数を「密かに」使用していました。 アクティベーション関数は入力をノードに受け取り、それを次の層に渡す前に何らかの変換を実行します。 あ線形アクティベーション (赤色) は値を受け取り、それを変更せずに返します。これはまさに上記の単純な回帰 NN で行っていたことです。
しかし、それをそのままにしておく必要はありません。 のTanHアクティベーション (青色) は、Sigmoid アクティベーションの一種です (関数が S 字を伸ばしたように見えることを意味します)。 これは、任意の入力を受け取り、それを -1 から 1 までの値にマップするため便利です。 大きな負の値は -1 に近い値に変換され、大きな正の値は 1 に近い値に変換されます。 これは、モデルが継続的な出力ではなくカテゴリ (誰かがローンを滞納するかどうかなど) を予測する場合に非常に役立つことがよくあります。
あガウス活性化関数 (緑) は、極値 (高または低) をとり、0 に近い値を返します。 それほど極端な値ではない場合は、1 に近い値が返されます。
線形アクティベーションのみを使用する場合、作成するモデルは線形のみになります。 しかし、非線形活性化関数を使用すれば、非線形モデルを作成できるようになります。
JMP Pro では、最大 2 層のニューラル ネットワークを作成でき、層ごとに異なる活性化関数を選択できます。 さまざまな数の層、ノード、さまざまな活性化関数を使用して、ニューラル ネットワークの膨大な数の構造を作成できます。 ニューラル ネットワークを使用して、1 つの連続値ではなくカテゴリを予測することもできます。
JMP
JMP でニューラル ネットワークを構築するには、次の場所に移動します。分析>予測モデリング>ニューラル。 Neural プラットフォームが開いたら、入力と出力をそれぞれ X ボックスと Y ボックスにドラッグして選択できます。
これにより、[モデルの起動] ウィンドウが開き、2 つの隠れ層に必要なノードの数と、使用する活性化関数の種類を指定できます。
一度クリックすると行く, JMP はニューラル ネットワークを構築し、モデルのパフォーマンスの測定値のテーブル (連続出力の R^2 や RMSE など) を作成します。 赤い三角形をクリックして選択すると、予測値によって実際の値をプロットすることもできます。実際の値と予測値をプロットする。 同様に、赤い三角形をクリックして選択することで、残差値をプロットできます。予測による残差のプロット。 赤い三角ボタンのメニューに移動して、プロファイラーPrediction Profiler を入手すると、ニューラル ネットワークで実際に何が起こっているかをさらに詳しく知ることができます。 もうブラックボックスは不要です!

結論
ニューラル ネットワークはとても楽しいもので、ニューラル ネットワークを使用していることを他の人に伝えるのはクールに思えます。 しかし、彼らの本質を見てみると、そうではありません。それで単純な線形回帰とは異なります。 どちらの場合も、次を指定する必要があります。構造そして学習方法機能する最適化されたモデルを取得するために。 ニューラルネットワークする単純な線形回帰よりも複雑な構造をモデル化できるため、入力と出力の間の関係が複雑であると考えられる場合に役立ちます。
追加のレイヤーとアクティベーション関数を使用すると、ネットワークの構造を試すことができますが、それらは単なる始まりにすぎません。 カテゴリ別の結果、複数の連続的な結果を予測できます。レイヤーは 5 つ、または 10 つになる可能性があります。 ニューラル ネットワークに適用できるさらに優れた機能 (たとえば、ドロップアウトや、ここでは説明しなかった他のアクティベーション関数) がありますが、基本を理解したので、これらすべてをもう少し自信を持って探索できるようになります。