PythonでAutoMLを実装する方法を教えます

PythonでAutoMLを実装する方法を教えます

[51CTO.com クイック翻訳] 機械学習は複雑な問題を自動的に解決する方法であることはすでに知られています。しかし、機械学習自体は自動化できるのでしょうか? これについてこの記事では検討します。この記事を読み終える頃には、この質問に対する答えがわかり、AutoML を実装するためのツールが手に入るでしょう。

1. 自動機械学習(AutoML)

機械学習モデルを適用する場合、通常はデータの前処理、特徴エンジニアリング、特徴抽出、特徴選択を実行します。この後、最適なアルゴリズムを選択し、最良の結果を得るためにパラメータを調整します。 AutoML は、これらのプロセスを自動化するための一連の概念と手法です。

1.1. AutoMLの利点

機械学習モデルを現実世界の問題に適用するには、多くの場合、多くのコンピューター サイエンスのスキル、ドメインの専門知識、数学の専門知識が必要です。これらすべてのスキルを備えた専門家を見つけるのは必ずしも簡単ではありません。

AutoML は、人間が機械学習モデルを設計する際に発生するバイアスやエラーも削減できます。企業は、データ パイプラインに AutoML を適用することで、多くの専門家を雇用するコストを削減できます。 AutoML を使用すると、機械学習モデルの開発とテストに必要な時間も短縮できます。

1.2. AutoMLの欠点

AutoML は機械学習の分野ではかなり新しい概念です。したがって、これらの技術の一部はまだ開発段階にあるため、現在の AutoML ソリューションの一部を適用する際には慎重に進めることが重要です。

もう 1 つの大きな課題は、AutoML モデルの実行にかかる時間コストが高いことです。それは実際には私たちのマシンの計算能力に依存します。すぐにわかるように、一部の AutoML ソリューションはローカル マシンで適切に動作しますが、Google Colab など、一部のソリューションは高速化するためにさらに最適化が必要です。

2. AutoMLの概念

AutoML に関しては、ニューラル アーキテクチャ検索と転移学習という 2 つの主要な概念を理解する必要があります。

2.1. ニューラルアーキテクチャ検索

ニューラル アーキテクチャ検索は、ニューラル ネットワークの設計を自動化するプロセスです。通常、これらのネットワークの設計には強化学習または進化アルゴリズムが使用されます。強化学習では、モデルの精度が低い場合はペナルティが課され、精度が高い場合は報酬が与えられます。この技術を使用することで、モデルは常により高い精度を達成しようとします。

スケーラブルな画像認識のための転送可能なアーキテクチャの学習、効率的なニューラル アーキテクチャ検索 (ENAS)、画像分類器アーキテクチャ検索のための正規化進化モデルなど、ニューラル アーキテクチャ検索を研究した論文はすでにいくつかあります。

転移学習

名前が示すように、転移学習は、事前にトレーニングされたモデルが学習した知識を転移し、新しい類似のデータセットに適用できるようにする技術です。これにより、より少ない計算時間とリソースでより高い精度を実現できます。ニューラル アーキテクチャ検索は、新しいモデル アーキテクチャの設計を必要とする問題に適していますが、転移学習は、データセットが事前トレーニング済みモデルで使用されるものと類似している問題に最適です。

3. AutoMLソリューション

それでは、利用可能な AutoML ソリューションのいくつかを見てみましょう。

3.1. 自動Keras

公式情報によると:

Auto-Keras は、自動機械学習 (AutoML) 用のオープンソース ソフトウェア ライブラリです。 これは、テキサス A&M 大学の DATA Lab とコミュニティ貢献者によって開発されました。 AutoML の最終的な目標は、データ サイエンスや機械学習の知識が限られているドメイン エキスパートに、使いやすいディープラーニング ツールを提供することです。 Auto-Keras は、ディープラーニング モデルのアーキテクチャとハイパーパラメータを自動的に検索する機能を提供します。

Auto-Keras は pip を使用してインストールできます。

  1. pip で auto-keras をインストールします

Auto-Keras は、最終リリース前にまだ広範囲にわたるテストが行​​われています。公式サイトでは、このサイトのライブラリの使用によって生じたいかなる損失についても責任を負わないことを警告しています。

このパッケージは、Keras ディープラーニング パッケージに基づいています。

3.2. オートスクレーア

Auto-Sklearn は、Scikit-learn をベースにした AutoML パッケージです。これは、Scikit-learn 推定器のドロップイン代替品です。簡単な pip コマンドでインストールすることもできます。

  1. pip で auto-sklearn をインストールします

Ubuntu では、Auto-Sklearn を実行するために、C++ 11 ビルド環境と SWIG 構成環境が必要です。

sudo apt-get install build-essential swig

Anaconda 経由のインストール方法は次のとおりです。

  1. conda で gxx_linux-64 と gcc_linux-64 をインストールします。

現在、Windows で Auto-Sklearn を実行することはできません。ただし、Docker イメージの使用や仮想マシン経由での実行など、いくつかのハックを試すことはできます。

3.3. ツリーベースパイプライン最適化ツール (TPOT)

公式サイトによると:

TPOT の目標は、パイプラインの柔軟な式ツリー表現と遺伝的プログラミングなどのランダム検索アルゴリズムを組み合わせることで、機械学習パイプラインの構築を自動化することです。 TPOT は、機械学習のベースライブラリとして Python ベースの scikit-learn ライブラリを使用します。

このソフトウェアはオープンソースであり、GitHub で入手できます。

3.4. Google の AutoML

公式サイトでは以下のように紹介されています。

Cloud AutoML は、Google の最先端の転移学習とニューラル アーキテクチャ検索テクノロジーを活用して、機械学習の専門知識が限られている開発者でもビジネス ニーズに基づいた高品質のモデルをトレーニングできるようにする機械学習プロダクト スイートです。

Google の AutoML ソリューションはオープンソースではありません。価格はこちらでご覧いただけます。

3.5. 水

H2O はオープンソースの分散型インメモリ機械学習プラットフォームです。 R と Python で利用できます。このパッケージは、幅広い統計および機械学習アルゴリズムをサポートしています。

4. AutoML を現実世界の問題に適用する

それでは、Auto-Keras と Auto-Sklearn を使用して実際の問題を解決する方法を見てみましょう。

4.1. Auto-Keras の実装

非常に高い計算能力を持つコンピュータをお持ちでない限り、次のコード例を Google Colab で実行することを強くお勧めします。 Google Colab で GPU ランタイムを有効にすることもお勧めします。 ここでの最初のステップは、Colab に Auto-Keras をインストールすることです。

  1. !pip オートケラスをインストール

MNIST データセットで画像分類タスクを実行します。最初のステップは、データセットと画像分類器をインポートすることです。データセットは Keras からインポートされ、画像分類器は Auto-Keras からインポートされます。事前トレーニング済みのモデルに基づいて手書きの数字を認識するモデルを構築しているため、これを教師あり学習の問題として分類します。次に、これまで遭遇したことのない数字の画像でモデルの精度をテストしました。

  1. keras.datasetsから
  2. インポートmnist
  3. autokeras.image.image_supervisedから
  4. ImageClassiferをインポートする

この例では、画像とラベルは numpy 配列としてフォーマットされています。次のステップでは、読み込んだデータを次のようにトレーニング セットとテスト セットに分割します。

  1. (x_train, x_test)、(x_test, y_test) = mnist.load_data()
  2. x_train = x_train.reshape(x_train.shape + (1,))
  3. x_test = x_test.reshape(x_test.shape + (1,))

データをトレーニング セットとテスト セットに分割した後、次のステップは画像分類器を適合させることです。

  1. clf = ImageClassifer(verbose= True )
  2. clf.fit(x_train、y_train、時間制限=12 * 60 * 60)
  3. clf.final_fit(x_train、y_train、x_test、y_test、retrain = True )
  4. y = clf.evaluate(x_test, y_test)
  5. 印刷(y)

1. verbose を True に指定すると、検索プロセスが画面に表示され、確認できるようになります。 2. fit メソッドでは、time_limit パラメータは秒単位の検索時間制限を参照します。 3. final_fit は、モデルが最適なモデル アーキテクチャを見つけた後の最後のトレーニングです。 retrain パラメータを True に指定すると、モデルの重みが再初期化されます。 4. テスト セットでモデルを評価した後、print(y) はモデルの精度を表示します。

Auto-Keras を使用して画像を分類するために必要なことはこれだけです。わずか数行のコードで、Auto-Keras が面倒な作業をすべて実行してくれます。

4.2. Auto-Sklearnの実装

Auto-Sklearn の実装は、上記の Auto-Keras の実装と非常によく似ています。数字データセットに対して同様の分類タスクを実行します。まず、いくつかのライブラリをインポートする必要があります。

  1. autosklearn.classificationをインポートする 
  2. sklearn.model_selection をインポートし、sklearn.datasets をインポートし、sklearn.metrics をインポートします。

いつものように、データセットをロードし、それをトレーニング セットとテスト セットに分割します。次に、autosklearn.classification から AutoSklearnClassifier をインポートします。これが完了したら、分類器をデータセットに適合させ、予測を行ってモデルの精度を確認します。必要なのはそれだけです。

  1. X, y = sklearn.datasets.load_digits(return_X_y= True )
  2. X_train、X_test、y_train、y_test = sklearn.model_selection.train_test_split(X、y、random_state=1)
  3. automl = autosklearn.classification.AutoSklearnClassifier()
  4. automl.fit(X_train、y_train) を実行します。
  5. y_hat = automl.predict(X_test)
  6. print( "精度スコア" , sklearn.metrics.accuracy_score(y_test, y_hat))

5. 次は何ですか?

追加の自動化された機械学習パッケージも現在積極的に開発中です。 2019 年には、この分野でさらなる進歩が見られるものと期待しています。これらのパッケージの進捗状況は、公式ドキュメント Web サイトから確認できます。もちろん、GitHub のプル リクエストを通じてこれらのパッケージに貢献することもできます。

Auto-Keras と Auto-Sklearn の詳細情報と例については、それぞれの公式 Web サイトをご覧ください。

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください]

<<:  機械学習について学びたい方はこちらをご覧ください。1ステップで専門家になる方法をお教えします!

>>:  アルゴリズムが力を発揮します!なぜ人間と人工知能はますます似てきているのでしょうか?

ブログ    

推薦する

...

分散フロー制御アルゴリズムを5分で理解する

フロー制御は、複雑なシステムでは必ず考慮しなければならない問題です。この記事では、さまざまなフロー制...

AIがスマート交通建設を推進し、警察ドローンの高速任務を加速

スマート交通とは、モノのインターネット、空間認識、クラウドコンピューティング、モバイルインターネット...

Google はなぜいつも AI に芸術を強制するのでしょうか?

Google の人工知能といえば、チェスマシンの AlphaGo や Waymo の自動運転車を思...

Nvidia H100 は GPT-3 を 11 分でトレーニングしました。PyTorch の創設者: 時間だけを見るのはやめましょう

昨日、Lao Huangが再び「勝利」しました!なぜ?最新の MLPerf ベンチマークでは、NVI...

私の国における人工知能の発展に対する最大の圧力は、基礎理論と独自のアルゴリズムです。

業界では、人工知能はこれまで2世代を経てきたと一般的に考えられています。第一世代の人工知能は知識主導...

...

C# 暗号化におけるハッシュ アルゴリズムの適用に関する簡単な分析

ハッシュ アルゴリズムは C# 暗号化でよく使用される方法ですが、ハッシュ アルゴリズムとは何でしょ...

負荷分散アルゴリズムの分類の詳細な説明

負荷分散により、ネットワーク パフォーマンスとネットワーク動作環境を効果的に改善できます。では、負荷...

AIのための大規模ストレージインフラストラクチャの要件

ストレージ インフラストラクチャに人工知能を導入することで、容量とパフォーマンスの要件が高まっていま...

AI界のお笑い王に100万の賞金!北京郵電大学、南洋理工大学などが「砂像動画」データセットを公開 FunQA:アルゴリズムで人間のユーモアを学習

人は直感に反する動画(ユーモラスで独創的で視覚的に魅力的な動画)から容易に喜びを得ることができます。...

AIが独自に病気を診断できる場合、人間の医師は責任を回避できるのでしょうか?

健康診断のために病院に行くところを想像してください。診察室に入るとすぐに、看護師があなたの写真を撮り...

...

人工知能技術は交通にどのように応用できるのでしょうか?

都市交通の分野では、AI信号制御、インテリジェントな街路交通監視、スマートバス停、スマート高速道路な...

子どもたちが将来のスタートラインで勝てるようにするには:人工知能の思考を学ぶ

今日は、子供たちにプログラミングを教えるということについての私たちの考えをいくつか共有したいと思いま...