ディープラーニングと機械学習:違いを理解する

機械学習とディープラーニングはどちらも人工知能の一種です。また、ディープラーニングは特定の種類の機械学習であると正しく言うこともできます。機械学習と深層学習はどちらも、トレーニングとテストのデータとモデルから始まり、最適化プロセスを経て、モデルがデータに最適になる重みを見つけます。どちらも数値(回帰)と非数値(分類)の問題を処理できますが、オブジェクト認識や言語翻訳など、深層学習モデルが機械学習モデルよりも適切に適合する傾向があるいくつかのアプリケーション領域があります。

機械学習の説明

機械学習アルゴリズムは、多くの場合に分けている教師(トレーニングデータが答えでタグ付けされている)と、教師なし(存在する可能性がある任意のラベルが学習アルゴリズムには表示されません)。教師あり機械学習の問題は、分類(住宅ローンの支払いを逃す確率などの非数値の回答を予測する)と回帰(マンハッタンストアで来月販売されるウィジェットの数などの数値の回答を予測する)にさらに分けられます。

教師なし学習はさらに、クラスタリング(ランニングシューズ、ウォーキングシューズ、ドレスシューズなどの類似したオブジェクトのグループの検索)、関連付け(コーヒーやクリームなどのオブジェクトの一般的なシーケンスの検索)、および次元削減(投影、特徴選択)に分けられます。、および特徴抽出)。

分類アルゴリズム

分類問題は、2つ以上のクラスからの選択を求める教師あり学習問題であり、通常は各クラスの確率を提供します。はるかに高いレベルのコンピューティングリソースを必要とするニューラルネットワークとディープラーニングを除外すると、最も一般的なアルゴリズムは、ナイーブベイズ、ディシジョンツリー、ロジスティック回帰、K最近傍法、およびサポートベクターマシン(SVM)です。ランダムフォレストなどのアンサンブル手法(モデルの組み合わせ)、他のバギング手法、およびAdaBoostやXGBoostなどのブースティング手法を使用することもできます。

回帰アルゴリズム

回帰問題は、モデルに数を予測するように求める教師あり学習問題です。最も単純で最速のアルゴリズムは線形(最小二乗)回帰ですが、それは平凡な結果をもたらすことが多いため、そこで停止するべきではありません。他の一般的な機械学習回帰アルゴリズム(ニューラルネットワークの略)には、ナイーブベイズ、ディシジョンツリー、K最近傍法、LVQ(学習ベクトル量子化)、LARSラッソ、エラスティックネット、ランダムフォレスト、AdaBoost、XGBoostが含まれます。回帰と分類の機械学習アルゴリズムには重複があることに気付くでしょう。

クラスタリングアルゴリズム

クラスタリング問題は、類似したデータポイントのグループを見つけるようにモデルに要求する教師なし学習問題です。最も一般的なアルゴリズムはK-Meansクラスタリングです。その他には、平均シフトクラスタリング、DBSCAN(ノイズのあるアプリケーションの密度ベースの空間クラスタリング)、GMM(ガウス混合モデル)、およびHAC(階層的凝集クラスタリング)が含まれます。

次元削減アルゴリズム

次元削減は、結果にほとんどまたはまったく影響を与えない変数を削除または結合するようにモデルに要求する教師なし学習の問題です。これは、分類または回帰と組み合わせて使用​​されることがよくあります。次元削減アルゴリズムには、多くの欠落値を持つ変数の削除、分散の少ない変数の削除、ディシジョンツリー、ランダムフォレスト、相関の高い変数の削除または結合、後方特徴除去、前方特徴選択、因子分析、およびPCA(主成分分析)が含まれます。

最適化手法

トレーニングと評価は、パラメーターの重みを最適化してデータのグラウンドトゥルースに最適な値のセットを見つけることにより、教師あり学習アルゴリズムをモデルに変換します。アルゴリズムは、オプティマイザーの最急降下法の変形に依存することがよくあります。たとえば、確率的勾配降下法は、ランダム化された開始点から複数回実行される本質的に最急降下法です。

確率的勾配降下法の一般的な改良点は、運動量に基づいて勾配の方向を修正する要素を追加するか、データの1つのパス(エポックまたはバッチと呼ばれる)から次のパスへの進行に基づいて学習率を調整します。

機械学習のためのデータクリーニング

野生のクリーンなデータのようなものはありません。機械学習に役立つようにするには、データを積極的にフィルタリングする必要があります。たとえば、次のようにします。

  1. データを確認し、欠落しているデータが多い列を除外します。
  2. データをもう一度見て、予測に使用する列(特徴選択)を選択します。これは、反復するときに変更したいものです。
  3. 残りの列にまだデータが欠落している行を除外します。
  4. 明らかなタイプミスを修正し、同等の回答をマージします。たとえば、米国、米国、米国、およびアメリカは、単一のカテゴリにマージする必要があります。
  5. 範囲外のデータを含む行を除外します。たとえば、ニューヨーク市内のタクシー旅行を分析している場合、大都市圏の境界ボックスの外側にあるピックアップまたはドロップオフの緯度と経度の行を除外する必要があります。

できることはもっとたくさんありますが、それは収集されたデータに依存します。これは面倒な場合がありますが、機械学習パイプラインでデータクリーニングの手順を設定すると、自由に変更して繰り返すことができます。

機械学習のためのデータのエンコードと正規化

マシン分類にカテゴリデータを使用するには、テキストラベルを別の形式にエンコードする必要があります。2つの一般的なエンコーディングがあります。

1つはラベルエンコーディングです。これは、各テキストラベル値が数値に置き換えられることを意味します。もう1つワンホットエンコーディングです。これは、各テキストラベル値がバイナリ値(1または0)の列に変換されることを意味します。ほとんどの機械学習フレームワークには、変換を行う関数があります。一般に、ワンホットエンコーディングが推奨されます。ラベルエンコーディングは、機械学習アルゴリズムを混乱させて、エンコードされた列が順序付きリストであると想定される場合があるためです。

マシン回帰に数値データを使用するには、通常、データを正規化する必要があります。そうしないと、範囲が広い数値が特徴ベクトル間のユークリッド距離を支配する傾向があり、他のフィールドを犠牲にしてそれらの効果が拡大される可能性があり、最急降下最適化は収束が困難になる可能性があります。機械学習用のデータを正規化および標準化するには、最小-最大正規化、平均正規化、標準化、単位長へのスケーリングなど、いくつかの方法があります。このプロセスは、多くの場合、機能スケーリングと呼ばれます

機械学習のための機能エンジニアリング

特徴は、観察される現象の個々の測定可能な特性または特性です。「特徴」の概念は、線形回帰などの統計手法で使用される説明変数の概念に関連しています。特徴ベクトルは、単一行のすべての特徴を数値ベクトルに結合します。

機能を選択する技術の一部は、問題を説明する独立変数の最小セットを選択することです。2つの変数の相関が高い場合は、それらを1つの機能に結合するか、1つを削除する必要があります。主成分分析を実行して、相関変数を線形無相関変数のセットに変換することがあります。

人々が新しい特徴を構築したり、特徴ベクトルの次元を減らしたりするために使用する変換のいくつかは単純です。たとえば、Year of Birthから減算してYear of Death、を作成しますAge at Death。これは、生涯および死亡率の分析のための主要な独立変数です。他の場合では、特徴の構築はそれほど明白ではないかもしれません。

機械学習のためのデータの分割

教師あり機械学習の通常の方法は、トレーニング検証テストのためにデータセットをサブセットに分割することです。作業の1つの方法は、データの80%をトレーニングデータセットに割り当て、それぞれ10%を検証およびテストデータセットに割り当てることです。(正確な分割は好みの問題です。)トレーニングの大部分はトレーニングデータセットに対して実行され、予測はすべてのエポックの終わりに検証データセットに対して実行されます。

検証データセットのエラーは、停止基準を特定したり、ハイパーパラメータの調整を促進したりするために使用できます。最も重要なことは、検証データセットのエラーが、モデルがトレーニングデータに過剰適合しているかどうかを確認するのに役立つことです。

テストデータセットに対する予測は、通常、最終モデルで行われます。テストデータセットがトレーニングに使用されたことがない場合、ホールドアウトデータセットと呼ばれることもあります。

データを分割するための他のいくつかのスキームがあります。一般的な手法の1つである交差検定では、完全なデータセットをトレーニングデータセットと検証データセットに繰り返し分割します。各エポックの終わりに、データはシャッフルされ、再び分割されます。

機械学習ライブラリ

Pythonでは、Spark MLlibとScikit-learnは、機械学習ライブラリに最適です。Rでは、いくつかの機械学習パッケージオプションは、CARAT、randomForest、e1071、およびKernLabです。Javaでは、Java-ML、RapidMiner、Wekaなどが適切な選択肢です。

ディープラーニングの説明

深層学習は、トレーニング対象のモデルに入力と出力の間に複数の隠れ層がある機械学習の形式です。ほとんどの議論では、深層学習は深層ニューラルネットワークを使用することを意味します。ただし、ニューラルネットワーク以外の種類の隠れ層を使用して深層学習を実装するアルゴリズムがいくつかあります。

「人工」ニューラルネットワークのアイデアは1940年代にさかのぼります。本質的な概念は、相互接続されたしきい値スイッチから構築された人工ニューロンのネットワークが、動物の脳や神経系(網膜を含む)と同じ方法でパターンを認識することを学習できるということです。

バックプロパゲーション

学習は基本的に、トレーニング中に両方が同時にアクティブになっているときに2つのニューロン間の接続を強化することによって行われます。最新のニューラルネットワークソフトウェアでは、これは最も一般的に、エラーのバックプロパゲーション、バックプロパゲーション、またはBPと呼ばれるルールを使用してニューロン間の接続の重み値を増やす問題です。

人工ニューラルネットワークのニューロン

ニューロンはどのようにモデル化されていますか?それぞれに、接続されたニューロンの出力を変換する伝播関数があり、多くの場合、加重和が使用されます。伝播関数の出力は、入力がしきい値を超えると起動する活性化関数に渡されます。

ニューラルネットワークの活性化関数

1940年代と50年代には、人工ニューロンはステップ活性化関数を使用し、パーセプトロンと呼ばれていました。現代のニューラルネットワークは、パーセプトロンを使用していると言うかもしれませが、実際には、ロジスティック関数またはシグモイド関数、双曲線正接、または正規化線形単位(ReLU)などの滑らかな活性化関数を持っています。ReLUは通常、高速収束に最適ですが、学習率の設定が高すぎると、トレーニング中にニューロンが「死ぬ」という問題があります。

[また、機械学習を失敗させる6つの方法]

活性化関数の出力は、追加のシェーピングのために出力関数に渡すことができます。ただし、多くの場合、出力関数は恒等関数です。つまり、活性化関数の出力は、下流に接続されたニューロンに渡されます。

ニューラルネットワークトポロジ

ニューロンについて理解したので、一般的なニューラルネットワークトポロジについて学習する必要があります。フィードフォワードネットワークでは、ニューロンは、1つの入力層、n個の隠れた処理層、および1つの出力層という別個の層に編成されます。各レイヤーからの出力は、次のレイヤーにのみ送られます。

ショートカット接続のあるフィードフォワードネットワークでは、一部の接続が1つ以上の中間層を飛び越える可能性があります。リカレントニューラルネットワークでは、ニューロンは次の層を介して直接的または間接的に自身に影響を与える可能性があります。

ニューラルネットワークのトレーニング

ニューラルネットワークの教師あり学習は、他の機械学習と同じように行われます。トレーニングデータのグループをネットワークに提示し、ネットワーク出力を目的の出力と比較し、エラーベクトルを生成し、エラーベクトルに基づいてネットワークに修正を適用します。 。修正を適用する前に一緒に実行されるトレーニングデータのバッチは、エポックと呼ばれます。

詳細に関心のある人のために、バックプロパゲーションは、モデルの重みとバイアスに関するエラー(またはコスト)関数の勾配を使用して、エラーを最小限に抑えるための正しい方向を見つけます。補正の適用を制御するのは、最適化アルゴリズムと学習率変数の2つです。収束を保証し、死んだReLUニューロンの発生を回避するには、通常、学習率変数を小さくする必要があります。

ニューラルネットワーク用のオプティマイザー

ニューラルネットワークのオプティマイザーは通常、何らかの形の勾配降下アルゴリズムを使用してバックプロパゲーションを駆動します。多くの場合、ランダムに選択されたミニバッチの最適化(確率的勾配降下)や運動量補正の適用など、極小値にとらわれるのを防ぐメカニズムがあります。勾配。一部の最適化アルゴリズムは、勾配履歴(AdaGrad、RMSProp、およびAdam)を調べることにより、モデルパラメーターの学習率も適応させます。