初心者必読: 5 つの反復レベルから機械学習を理解する

初心者必読: 5 つの反復レベルから機械学習を理解する

このなぞなぞの答えを推測できますか?

  • 機械学習を学べば、どこにでも登場します...
  • プログラマーであれば、これを何千回も使うでしょう...
  • これまでに何らかのテクニックを練習したことがあるなら、これはまさに...

いいえ、答えはコーヒーをたくさん飲むことではありません…繰り返しです!

はい、反復とは、特定の結果を達成するために一連のタスクを繰り返すプロセスです。

ちょっと待ってください、それは辞書の定義ではないのですか? ええ、そうです、それが反復の実際の意味です。私たちは何か面白い秘密を明かそうとしているわけではありません。しかし、私たちはこの単純な概念を、皆さんにとって新しい方法で説明したいと考えています。私たちの目標は、教科書に載っている通常のアプローチとは異なる視点から機械学習の基本的な概念の概要を提供することです。

ほとんどの書籍では、データの読み込み、前処理、モデルの適合、予測などの順序で機械学習のプロセスが説明されていることはご存じのとおりです。

この順次的なアプローチは確かに合理的で有用ですが、現実世界の機械学習がこれほど直線的になることはめったにありません。対照的に、実用的な機械学習は特に循環的な性質を持ち、継続的な反復、調整、改善を必要とします。

したがって、私たちは、シンプルな反復手法が機械学習においていかに美しい形と深い意味を持つかを示したいと思っています。この記事は初心者向けに書かれていますが、経験豊富な読者も読むとよいでしょう。

なぜ反復について議論するのでしょうか?

反復は機械学習の中心的な概念であり、多くの点で重要です。この単純な概念が機械学習のワークフローのどこに当てはまるかを正確に理解すると、多くの具体的なメリットが得られます。

1. アルゴリズムをより深く理解できる

2. より現実的なプロジェクトスケジュールを作成できる

3. モデルの改善が容易になります

4. 最初の結果が悪くても、継続しやすくなります

5. 機械学習におけるより複雑な問題の解決を支援する

経験に基づくと、機械学習のワークフローを反復的な観点から見ると、初心者が機械学習の背後にある概念を理解するのに役立ちます。

では、これ以上長々とせずに、機械学習の反復の 5 つのレベルを始めましょう。

目次

  • モデルレベル: フィッティングパラメータ
  • ミクロレベル: ハイパーパラメータの調整
  • マクロレベル:問題解決
  • メタデータレベル: データの改善
  • 人間レベル:自分を向上させる

モデルレベル: フィッティングパラメータ

反復が重要な役割を果たす最初のレベルはモデル レベルです。回帰モデル、決定木、ニューラル ネットワークなど、どのモデルも多数 (場合によっては数百万) のモデル パラメータによって定義されます。

たとえば、回帰モデルは回帰係数によって定義され、決定木はノードの分類方法によって定義され、ニューラル ネットワークはレイヤーを接続する重みによって定義されます。

しかし、マシンはどのようにして正しいモデル パラメータ値を学習するのでしょうか? 反復アルゴリズムが役立ちます。

勾配降下法を用いたパラメータのフィッティング

勾配降下法アルゴリズム(または確率的勾配降下法)は、機械学習の大きな成功です。

勾配降下法は、関数の最小値を見つけるための反復的な方法です。機械学習では、この関数は損失 (またはコスト) 関数であることが多いです。 「損失」とは、予測エラーが発生したときに発生するコストを定量的に表したものです。

一連のパラメータが与えられると、勾配降下法は対応するモデルの予測損失を計算し、それらのパラメータを調整して損失を減らします。このプロセスは、損失がこれ以上削減できなくなるまで繰り返されます。

損失を最小限に抑える最後のパラメータ セットが、最終的な適合モデルになります。

直感的な勾配降下アルゴリズム

ここでは勾配降下法の数学的公式を導出しません。勾配降下法の概念を直感的に説明します。

1. 谷と山がある山脈を想像してください(損失関数)。

2. 山脈の各位置(パラメータ セット)には高さ(損失)があります。

3. 次に、山脈のどこかにボールを置きます(初期化)。

4. どの瞬間でも、ボールは最も急な方向(勾配)に転がります。

5. 谷底(局所的最小値)で止まるまで回転(反復)を続けます。

6. 理想的には、最良の谷(グローバル最小値)を見つけたいです。

7. ボールが局所的最小値に陥るのを防ぐための巧妙な方法はたくさんあります (例: 複数のボールを初期化し、ボールが小さな丘を越えられるようにボールに勢いを与えるなど)。

8. ちなみに、山がお椀型(凸関数)であれば、ボールは必ず最高点に到達します。

実際には、機械学習アプリケーション パッケージ (Scikit-Learn など) を呼び出すときに、勾配降下アルゴリズムを最初から記述する必要はありません。

ミクロレベル: ハイパーパラメータの調整

反復が大きな役割を果たす次のレベルは、いわゆる「マイクロ」レベルであり、一般的には一般モデルまたはモデル ファミリと呼ばれます。

モデル ファミリは、カスタマイズ可能な構造を持つモデルの広範なカテゴリと考えることができます。ロジスティック回帰、決定木、サポートベクターマシン (SVM)、ニューラルネットワークは、実際には異なるモデルファミリです。各モデル ファミリには、モデル パラメータを実際に適合させる前に選択できる一連の構造があります。

たとえば、ロジスティック回帰ファミリでは、L1 または L2 正則化ペナルティのいずれかを使用して個別のモデルを構築できます。決定木ファミリでは、ツリーの深さ、剪定しきい値、分割基準など、さまざまな構造を持つモデルを選択できます。

これらのアーキテクチャ選択変数はハイパーパラメータと呼ばれます。

ハイパーパラメータが特別な理由

ハイパーパラメータは、勾配降下法やその他の最適化アルゴリズムを使用してデータから直接学習することができない「高レベル」のパラメータです。これらは、モデル パラメータを適合する前に決定する必要があるモデルに関する構造情報を記述します。

したがって、「ロジスティック回帰モデルをトレーニングしたい」と言う場合、実際に意味しているのは 2 段階のプロセスです。

  1. まず、モデル ファミリのハイパーパラメータを決定します。たとえば、過剰適合を防ぐために、モデルに L1 ペナルティまたは L2 ペナルティを設定する必要がありますか?
  2. 次に、モデルパラメータをデータに適合させます。たとえば、損失関数を最小化するためにモデル係数をどのように適合させるのでしょうか?

先ほど、勾配降下法がステップ 2 にどのように役立つかについて説明しました。ただし、勾配降下法を使用してモデル パラメータを適合するには、まずモデル ファミリからハイパーパラメータを設定する必要があります。

では、モデル ファミリに最適なハイパーパラメータを見つけるステップ 1 にはどのように取り組むのでしょうか?

クロスバリデーションを使用したハイパーパラメータの調整

クロス検証は、非常に多くのシナリオで最も有用な手法の 1 つであるため、これを使用するとまるで不正行為をしているように感じられます。

この文脈では、クロスバリデーションは、特定のハイパーパラメータのセットで構築されたモデルのパフォーマンスを評価するための反復的な方法でもあります。これは、トレーニング データをチャンクに分割してリサイクルすることで、トレーニング データを再利用する賢い方法です (詳細については次のセクションを参照してください)。

クロス検証を使用すると、トレーニング セットのみを使用して、さまざまなハイパーパラメータ セットでモデルを適合および評価できます。つまり、テスト セットを取り出して、最終的なモデルの選択に使用できます (これについては次のセクションで詳しく説明します)。

クロスバリデーションの詳細な手順

10 倍交差検証を使用してハイパーパラメータを選択する手順は次のとおりです。

1. トレーニング セットを「フォールド」と呼ばれる 10 個の等しい部分に分割します。

2. すべての代替ハイパーパラメータ セットからハイパーパラメータ セットを選択します。

3. ハイパーパラメータのセットを指定した後、トレーニング データの最初の 9 つのフォールドを使用してモデルをトレーニングします。

4. 10 番目のフォールド、または別のフォールドのデータ (ホールドアウト) を使用してモデルを評価します。

5. 同じハイパーパラメータセットを使用して手順(3)と(4)を10回繰り返し、そのたびに異なるデータフォールド(10個のフォールドそれぞれに1つ)を取り出して評価します。

6. 10 サイクルすべての結果を合計し、このハイパーパラメータ セットのパフォーマンス インジケーターとして使用します。

7. すべての代替ハイパーパラメータセットに対して手順(2)から(6)を繰り返す。

疑似コードは次のとおりです。

  1. # 擬似コード クロス検証
  2. all_folds = split_into_k_parts(すべてのトレーニングデータ)
  3.  
  4. hyperparameter_setsset_pの場合:
  5. モデル = InstanceFromModelFamily()
  6.  
  7. all_folds内のfold_kの場合:
  8. training_folds = fold_k 以外のすべての折り畳み
  9. set_p を使用して training_foldsモデルを適合させる
  10. fold_k_performance = fold_kモデルを評価する
  11.  
  12. set_p_performance = set_pすべてのk 個の fold_k_performances の平均
  13.  
  14. 選択 セット 最高のset_p_performanceを持つhyperparameter_setsから

マクロレベル:問題解決

ここで、個々のモデル、さらにはモデル ファミリから離れていきます。問題解決レベルでの反復について説明します。

多くの場合、クロス検証を使用してパラメータを調整しても、最初に構築されたモデルは完璧ではありません。これは、モデル パラメータのフィッティングとハイパーパラメータの調整が、機械学習の問題解決ワークフロー全体の 2 つの部分にすぎないためです。

最高のパフォーマンスを実現するソリューションを見つけるために使用できる反復手法は他にもいくつかあります。以下の 2 つの手法により、予測性能を簡単に向上できると考えています。

さまざまなモデルファミリーを試す

機械学習には「ノー・フリー・ランチ定理 (NFL)」と呼ばれる概念があります。 NFL 定理については人によって解釈が異なりますが、私たちが重視しているのは、あらゆる問題に最適な単一のモデル ファミリは存在しないということです。

異なるモデル ファミリは、データ タイプ、問題領域、スパース データ、収集されるデータの量など、さまざまな要因によって動作が異なります。

したがって、特定の問題に対する解決策を改善する最も簡単な方法の 1 つは、いくつかの異なるモデル ファミリを試すことです。この反復レベルは以前のレベルよりも高くなります。

疑似コードは次のとおりです。

  1. #モデル ファミリを選択するためのeudocode
  2. トレーニングデータ、テストデータ = ランダムに分割(すべてのデータ)
  3.  
  4. list_of_families = ロジスティック回帰、
  5. 決定木、
  6. SVM、
  7. ニューラルネットワークなど
  8.  
  9. list_of_families内のmodel_familyの場合:
  10. best_model = 調整済み  training_dataクロス検証
  11.  
  12. test_data各 model_familyからbest_model を評価する
  13. 最終モデルを選択

ここでのクロス検証手順は前のセクションと同じであることに注意してください。この美しいネストされた反復形式は、機械学習の問題を解決する効果的な方法です。

組み合わせモデル

ソリューションを改善するための次のアプローチは、複数のモデルをアンサンブルに組み合わせることです。これは、これらのモデルを適合させる反復プロセスからの直接的な拡張です。

さまざまなアンサンブル手法の詳細については後述しますが、アンサンブルの一般的な形式は、複数のモデルからの予測の平均を単純に取ることです。もちろん、モデルを組み合わせるより高度な方法もありますが、複数のモデルを適合させる反復的なアプローチは同じです。

この組み合わせによる予測では、通常、単一のモデルに比べてパフォーマンスがわずかに向上します。以下は、単純なアンサンブル モデルを構築するための疑似コードです。

  1. #シンプルなアンサンブルモーダルを構築するための擬似コード
  2. トレーニングデータ、テストデータ = ランダムに分割(すべてのデータ)
  3.  
  4. list_of_families = ロジスティック回帰、
  5. 決定木、
  6. SVM、
  7. ニューラルネットワークなど
  8.  
  9. list_of_families内のmodel_familyの場合:
  10. best_model = 調整済み  training_dataクロス検証
  11.  
  12. 各 model_familyからのbest_modelによる平均予測
  13. …利益!(頻繁に)

プロセスの大部分は前のテクニックとまったく同じであることに注意してください。

実際には、これは両方のテクニックをかなり簡単に再現できることを意味します。まず、さまざまなモデル ファミリから *** モデルを構築できます。その後、それらを統合することができます。 *** 同じテスト セットで個別のモデルとアンサンブル モデルを評価できます。

最後にアドバイスを一つ。最終モデルを選択するには、常にテストされていない別のテスト セットを用意しておく必要があります。モデリング プロセスの開始時に、データをトレーニング セットとテスト セットに分割することをお勧めします。必要がない限りテスト セットを使用しないでください。

メタデータレベル: データの改善

より優れたデータはより優れたアルゴリズムに勝りますが、必ずしもより多くのデータがより優れたアルゴリズムに勝るというわけではありません。はい、より良いデータとは、一般的にはより多くのデータを意味しますが、よりクリーンなデータ、より関連性の高いデータ、より優れた機能を備えたデータも意味します。

データの改善も反復的なプロセスです。機械学習のより大きな課題に直面すると、最初からすべてのデータを入手するのは難しいことに気づきます。

おそらく、あなたが考えていなかった重要な機能がいくつかあるでしょう。十分なデータを収集していない可能性があります。データセット内の列を誤解していて、戻って同僚に再度説明する必要がある場合もあります。

優れた機械学習実践者は常にオープンな心を持ち、データセットを改善し続けます。

より良いデータの収集

より優れたデータを収集する能力は、時間、経験、そしてより多くのドメイン専門知識とともに発達するスキルです。たとえば、不動産価格モデルを構築する場合は、住宅自体、近隣地域、さらには過去に支払われた固定資産税に関する公開情報を収集する必要があります。

より優れたデータのもう 1 つの要素は、データの全体的なクリーンさです。これは、欠落データを減らし、測定誤差を低減し、プロキシ メトリックをプライマリ メトリックに置き換えるよう最善を尽くすことを意味します。

データセットを改善するためのアイデアを刺激するいくつかの質問を以下に示します。

  • 収集されるデータには必要な特性がすべて備わっていますか?
  • データをもっときれいにできますか?
  • 測定誤差を減らすことはできますか?
  • 除去できる外れ値はありますか?
  • より多くのデータを収集するのは安価ですか?

より良い機能の設計

特徴エンジニアリング、つまりドメイン知識を活用してデータから新しい特徴を作​​成することは、モデルを改善するための最も価値のあるアクティビティです。

多くの場合、困難で時間がかかりますが、応用機械学習にとって非常に重要であると考えられています。したがって、機械学習の実践者として、選択した分野で学習を継続することはあなたの責任です。

これは、その分野についてより詳しく学ぶにつれて、最も影響力のある人々の特性についてより優れた直感を養うことができるようになるためです。学習は、専門知識が増すにつれて改善される反復的なプロセスとして取り組む必要があります。

人間レベル:自分を向上させる

今、私たちは機械学習において最も重要なレベル、つまり人間のレベルに到達しました。この記事の内容をすべて忘れてしまったとしても、このセクションから何かを学んでいただければ幸いです。

実のところ、機械学習とデータサイエンスは非常に広範囲で複雑なトピックです。特に初心者の場合は、圧倒されるかもしれません。世の中には膨大なコンテンツが存在し、毎日新たな開発が行われています。

ご存知ですか?機械学習の部分は私たちにとってまだ非常に難しく、混乱を招きます。しかし、それは問題ありません。なぜなら、反復の最も重要なレベルは、機械学習の実践者である個人レベルにあると私たちは固く信じているからです。

そこで、この長い記事をいくつかのアドバイスで締めくくりたいと思います。このセクションが、この分野の情報過多に圧倒されずに、冷静な判断を下すのに役立つことを願っています。

#1. 学び続けること

前述のように、反復は機械学習プロセスのあらゆる側面に組み込まれています。あなたの個人的なスキルも例外ではありません。機械学習は奥が深く豊かな分野であり、練習すればするほど簡単になります。

#2. 最初から成功を期待しない

最初の Kaggle コンペティションで優勝する必要はありません。構築したモデルがまったく使えないことがわかったとしても、それは問題ではありません。最も貴重な宝物はあなた自身の成長と向上であり、それが主な焦点となるべきです。

#3. 何も知らなくても大丈夫

現実には、機械学習について知るべきことをすべて 1 人の人間が知ることはほぼ不可能です。重要なのは、必要に応じて新しいアルゴリズムやテクニックを選択できる基盤を構築することです。はい...反復を理解することも基礎の一部です。

#4. 少なくとも2回は試す

アルゴリズムやタスクに苦労していますか? 思ったよりも時間がかかっていますか? 問題ありません。少なくとももう 1 回は試してください。 2 回目に試すと、すべてがより簡単かつ速くなります。これが上達するための最良の方法です。

#5. 理論、実践、プロジェクトサイクル

機械学習を学ぶ最も効果的な方法は、理論、対象を絞った実践、大規模なプロジェクトを繰り返すことだと私たちは考えています。これは、応用可能な実践的なスキルを身につけながら理論を習得する最も早い方法です。

要約する

反復は、機械学習のあらゆる側面を結び付ける、シンプルでありながら美しい概念です。

  • 人間レベル:スキルを向上させるために何度も練習する
  • メタデータレベル: データと機能の継続的な改善
  • マクロレベル: さまざまなモデルファミリーと組み合わせの検討
  • ミクロレベル: モデルのハイパーパラメータを調整するためのクロス検証
  • モデルレベル: モデルパラメータに適合する勾配降下法

<<:  ビッグデータの機械理解の秘密:クラスタリングアルゴリズムの詳細な説明

>>:  AI製品化の鍵はアルゴリズムではなくインフラとデータ

ブログ    
ブログ    
ブログ    

推薦する

AISpeechの趙恒毅氏:国内のスマート音声産業は幅広い発展の見通しがある

[51CTO.comからのオリジナル記事] 人工知能の急速な発展に伴い、音声インタラクションは人工知...

Nature サブ出版物: 訓練されていないニューラルネットワークでも顔検出が可能

Nature Communications に最近発表された新しい研究によると、高度な視覚認知機能は...

トヨタ・リサーチ・インスティテュート、AIを活用した自動車設計ツールを発表

トヨタ・リサーチ・インスティテュートは、この新しい革新的な生成AIツールにより、デザイナーは効率的か...

AI投資は2025年までに2,320億ドルに達する

KPMGが最近発表したレポートによると、2025年までに人工知能(AI)、機械学習、ロボティック・プ...

...

...

...

「ビッグアイクリップ」が生まれ変わり、ChatGPTチャットボットに変身

6 月 29 日のニュースによると、かつては物議を醸し、今では懐かしく思われている Microsof...

...

【文字列処理アルゴリズム】文字列包含アルゴリズムの設計とCコード実装

1. 要件の説明長い文字列と短い文字列が与えられた場合、短い文字列のすべての文字が長い文字列に含まれ...

...

人工知能とモノのインターネット: インターネット通信の未来

人工知能 (AI) とモノのインターネット (IoT) の登場により、通信およびインターネット技術業...

機械学習について知っておくべき6つの革命的な教訓

私たちは、ロボット工学、スマート家電、スマート小売店、自動運転車技術などによって推進される新しい時代...

...

AIがパートナー探しをお手伝い:Tinder + AI = 仲人?

[[346697]] 2012年、インキュベーター企業のHatch Labsは、IACとXtrem...