Auto-Sklearn と Auto-PyTorch を使用して機械学習を自動化する方法

Auto-Sklearn と Auto-PyTorch を使用して機械学習を自動化する方法

[[430082]]

【51CTO.com クイック翻訳】はじめに

今日、機械学習 (ML) は、ビジネス、エンジニアリング、研究など幅広い分野に影響を及ぼしています。通常、機械学習の進歩は、ソフトウェアと自動化のより深い反復と密接に関連しています。人間の活動において、コンピューターが反復的かつ判断的な処理を実行する必要がある限り、機械学習を通じてそれを実行し、実装することができます。もちろん、解決すべきさまざまな不確実な問題に直面すると、探索空間と特定の学習アルゴリズムを定義して、コンピューターが独立した判断を下して問題を解決できるようにトレーニングする必要があります。

現在、機械学習は効果的なディープラーニングにより2.0の時代に突入しています。タンパク質モデルに対するデータの適合性をより正確に予測できるだけでなく、囲碁、Dota II、StarCraft II などでプロの人間プレイヤーに勝つこともでき、非常に一貫性のあるさまざまなテキストと音声によるインタラクティブな応答を作成することもできます。リンクをクリックすると、機械学習がさまざまな業界に与える影響について詳しく知ることができます。もちろん、これらすべては、AutoML と呼ばれるさまざまなオープンソース ツールと、ML を実際に適用するための優れたプラクティスと切り離せません。

AutoML とは何ですか?

AutoML は、テクノロジーとツールの大きなカテゴリとして、さまざまな自動検索および学習シナリオで使用できます。たとえば、統計学習アルゴリズムのハイパーパラメータにベイズ最適化を適用したり、ニューラル アーキテクチャを検索するためにディープラーニング モデルを適用したりします。これらの多様なエコシステムは現在、AutoML.ai にカタログ化されています。その中でも、最も有名な AutoML ソフトウェア パッケージの 1 つは、Auto-SciKit-Learn (または Auto-Sklearn) です。 2014 年から 2016 年にかけて ChaLearn AutoML Challenge で優勝しました。

Auto-Sklearn は、ドイツの自動機械学習研究グループによって開発されました。 Auto-Sklearn は Python パッケージとして、SciKit-Learn の使用パターンに厳密に従うように構築されているため、「Auto-SciKit-Learn」という名前が付けられています。

Auto-Sklearn に加えて、フライブルク-ハノーバーの AutoML グループは Auto-PyTorch ライブラリも開発しました。以下の簡単な例では、これら 2 つのコードベースを AutoML へのエントリ ポイントとして使用します。

AutoML デモ

まず、必要なパッケージと依存関係を設定しましょう。ここでは、Python 3 の virtualenv を使用して、デモ プロジェクトの仮想環境を管理します。もちろん、Anaconda (翻訳者注: オープンソースの Python ディストリビューション) と pip も使用できます。これらは同様に動作します。

以下は、Ubuntu などの Unix ベースのシステムで実行環境を設定するためのさまざまなコマンドです。 Windows を使用している場合は、Anaconda プロンプトからコマンドを入力して環境を設定できます。 Auto-Sklearn のドキュメントでは、requirements.txt 依存ファイルからインストールすることを推奨していますが、この例のコードではこれは必要ありません。

  1. 作成する 新しい仮想環境をアクティブ化します。virtualenv automl --python=python3 source automl/bin/activate    
  2. # auto-sklearn をインストール pip auto-sklearn をインストール

両方の AutoML ライブラリに同じ環境を使用すると、競合が発生する可能性があることに注意してください。したがって、Auto-PyTorch 用の 2 番目の環境を作成する必要があります。また、この環境の Python バージョンは 3.7 以上である必要があります。

  1. deactivate virtualenv autopt –-python=python3.7 source autopt/bin/activate # github リポジトリからauto-pytorch をインストールします git clone https://github.com/automl/Auto-PyTorch.git cd Auto-PyTorch pip install -e . pip install numpy==1.20.0 pip install ipython

上記の pip install -e とそれに続く 2 つのインストール ステートメントを実行すると、次の奇妙なエラーが発生する可能性があります。調査の結果、NumPy バージョンを 1.20.0 にアップグレードすることでこの問題を解決できることがわかりました。

  1. ValueError: numpy.ndarray のサイズが変更されました。バイナリ非互換性を示している可能性があります。Cヘッダーから88 を期待しましたがPyObjectから80 を取得しました。

プロジェクトに貢献したい場合、または最新の実行コードを確認したい場合は、以下の開発ブランチを確認してください。

  1. # (オプション) git checkout development #チュートリアルプライマリブランチ戻っていることを確認してくださいgit checkout master

この例の残りのコードは Python で記述されているため、Python プロンプト、Jupyter ノートブック、またはテキスト エディターを開きます。

この例では、標準の SciKit-Learn、Auto-Sklearn、および Auto-PyTorch 分類器を使用した基本的な分類のデモンストレーションが含まれます。各シナリオでは、SciKit-Learn に組み込まれている単一のデータセットを使用します。各デモでは、共有コードを使用して共通の依存関係をインポートし、対応するデータセットを読み込んで分割します。

  1. インポート時間sklearn をインポート sklearn.datasets をインポート
  2. #**負荷 データを分割します** data, target = sklearn.datasets.load_iris(return_X_y= True )  
  3. # 分割 n = int (data.shape[0] * 0.8)  
  4. train_x = データ[:n] train_y = ターゲット[:n] test_x = データ[n:] test_y = ターゲット[n:]

この例では、データセットを設定するための上記のコードが各デモ モジュールで使用されます。

時間を節約するために、小さな「iris」データセット(150 個のサンプル、4 つの特徴、3 つのラベル カテゴリ)を使用しました。この例を読んだ後、より複雑なデータ セットを試すことができます。

sklearn.datasets の他の分類データセットには、糖尿病 (load_diabetes) データセットとデジタル データセット (load_digits) が含まれます。糖尿病データセットには 569 個のサンプルがあり、それぞれに 30 個の特徴と 2 個のラベル カテゴリがあります。一方、デジタル データセットには 1797 個のサンプルがあり、それぞれに 64 個の特徴 (8x8 画像に対応) と 10 個のラベル カテゴリがあります。

Sklearn の AutoML 分類器を使い始める前に、デフォルトの設定で標準の Sklearn からさまざまな標準化された分類器をトレーニングしてみましょう。利用できるオプションは多数ありますが、k 最近傍分類器、サポート ベクター マシン分類器、および多層パーセプトロンを使用します。

  1. # 分類器をインポートsklearn.svmからSVC をインポート sklearn.neural_networkからMLPClassifier をインポートsklearn.neighborsからKNeighborsClassifier をインポート
  2. # インスタンス デフォルトパラメータ knn = KNeighborsClassifier() mlp = MLPClassifier() svm = SVC()

SciKit-Learn は、使いやすい適合/予測 API を使用して、モデルのトレーニング プロセスを簡単にします。同時に、Auto-Sklearn と Auto-PyTorch の 2 つのソフトウェア パッケージも同じ API を保持しているため、3 つのトレーニング モデルはどれも似ているだけでなく、使いやすくなっています。

  1. t0 =時間.時間() knn.fit(train_x, train_y) mlp.fit(train_x, train_y) svm.fit(train_x, train_y) t1 =時間.時間()

同様に、さまざまなモデルの評価も比較的簡単です。 SciKit-Learn 分類モデルは、入力データを取得し、ラベルを予測し、それを sklearn.metrics.accuracy_score に渡して精度を計算するために使用できる予測メソッドを提供します。

次のコードは、最後のコード スニペットでトレーニングされた k 近傍法、サポート ベクター マシン、および多層パーセプトロン分類器を使用して、ホールドアウト テスト セットでさまざまな予測と予測精度を計算します。

  1. knn_predict = knn.predict(test_x) train_knn_predict = knn.predict(train_x)  
  2. svm_predict = svm.predict(test_x) train_svm_predict = svm.predict(train_x)  
  3. mlp_predict = mlp.predict(test_x) train_mlp_predict = mlp.predict(train_x)  
  4. knn_accuracy = sklearn.metrics.accuracy_score(test_y、knn_predict) train_knn_accuracy = sklearn.metrics.accuracy_score(train_y、train_knn_predict)  
  5. svm_accuracy = sklearn.metrics.accuracy_score(test_y、svm_predict) train_svm_accuracy = sklearn.metrics.accuracy_score(train_y、train_svm_predict)  
  6. mlp_accuracy = sklearn.metrics.accuracy_score(test_y、mlp_predict) train_mlp_accuracy = sklearn.metrics.accuracy_score(train_y、train_mlp_predict)  
  7. print(f "svm、knn、mlp テスト精度: {svm_accuracy:.4f}," \ f "{knn_accuracy:.4}, {mlp_accuracy:.4}" ) print(f "svm、knn、mlp トレーニング精度: {train_svm_accuracy:.4f}," \ f "{train_knn_accuracy:.4}, {train_mlp_accuracy:.4}" ) print(f "適合時間: {t1-t0}" )

アイリスデータセットの Sklearn 分類器

これらのモデルは虹彩トレーニング データセットには非常に効果的ですが、トレーニング セットとテスト セットの間にはまだ大きなギャップがあります。

次に、autosklearn.classification の AutoSKlearnClassifier クラスを使用して、複数の種類の機械学習モデルのハイパーパラメータ検索を実行し、最適なセットを保持します。次のコード スニペットに示すように、共通のインポートを導入し、トレーニング データセットとテスト データセットの分割を設定した後、AutoML 分類子をインポートしてインスタンス化する必要があります。

  1. autosklearnをautosklearn.classificationからインポートし、AutoSklearnClassifierをインポートします  オーストラリア 
  2. 分類子 = ASC () 分類子.このタスクの残り時間 = 300  
  3. t0 =時間.時間() classifier.fit(train_x, train_y) t1 =時間.時間()  
  4. autosk_predict = 分類子.predict(test_x) train_autosk_predict = 分類子.predict(train_x)
  5. autosk_accuracy = sklearn.metrics.accuracy_score( \ test_y、 autosk_predict \ ) train_autosk_accuracy = sklearn.metrics.accuracy_score( \ Train_y、 train_autosk_predict \ )  
  6. print(f "テスト精度 {autosk_2_accuracy:.4f}" ) print(f "トレーニング精度 {train_autosk_2_accuracy:.4f}" ) print(f "適合時間: {t1-t0}" )

アイリスデータセットの Auto-Sklearn 分類器アンサンブル

time_left_for_this_task のデフォルト値 (3600 秒、つまり 1 時間) を設定しないと、AutoSklearnClassifier を使用した fit メソッドの実行に非常に時間がかかります。明らかに、これは単純なアイリス データセットでは受け入れられません。このため、パッケージのドキュメントには、分類子オブジェクトを初期化するときに、時間制限を入力パラメータとして設定する必要があると記載されています。

もちろん、クロス検証を有効にして fit メソッドを実行することもできます。これを行うには、再適合メソッド、最適なモデル、ハイパーパラメータを使用して、トレーニング データセット全体を再トレーニングする必要があります。実際には、クロス検証と再適合を使用すると、デフォルト設定と比較してテスト セットの精度が 80% から 86.67% にわずかに向上することがわかりました (下の表を参照)。

注目すべきは、predict メソッドを使用して AutoSklearnClassifier オブジェクトをフィッティングした後、推論プロセスでは AutoML ハイパーパラメータ検索中に見つかった最適なモデル セットが使用されることです。

最後に、ディープラーニングに適した別の AutoML パッケージである Auto-PyTorch について説明します。 Auto-Sklearn と同様に、Auto-PyTorch も簡単に使い始めることができます。次のコード スニペットを実行する前に、Auto-PyTorch 環境に切り替えて、適切な依存関係が利用可能であることを確認します。

  1. autoPyTorch をインポートし、 autoPyTorchからAutoNetClassification をANCとしてインポートします。
  2. モデル = ANC(max_runtime=300, min_budget=30, max_budget=90, cuda= False )  
  3. t0 =時間.時間() model.fit(train_x, train_y, validation_split=0.1) t1 =時間.時間()  
  4. auto_predict = model.predict(test_x) train_auto_predict = model.predict(train_x)  
  5. auto_accuracy = sklearn.metrics.accuracy_score(test_y、auto_predict) train_auto_accuracy = sklearn.metrics.accuracy_score(train_y、train_auto_predict)  
  6. print(f "自動pytorchテスト精度{auto_accuracy:.4}" ) print(f "自動pytorchトレーニング精度{train_auto_accuracy:.4}" )

通常のインポートを実行してデータを分割すると、次のようになります。

アイリスデータセットの自動PyTorch分類器

上記の結果から、Auto-PyTorch はアイリス データセットのフィッティングに非常に効率的であり、最大 90 秒のトレーニングとテストの精度を実現していることがわかります。これは、以前にトレーニングした自動化された SciKit-Learn 分類器や、デフォルトのパラメータを持つ標準の sklearn 分類器よりも大幅に優れています。

まとめ

一般的に、AutoML の価値は主にハイパーパラメータ検索の自動化の側面から生まれます。 AutoML の追加の抽象化レイヤーと自動ハイパーパラメータ検索により、従来のデータ サイエンスと機械学習のワークフローの実用性、パフォーマンス、効率が向上します。 AutoML ツールを適切に使用すると、アプリケーションのパフォーマンスが向上するだけでなく、ハイパーパラメータの冗長性が軽減され、アーキテクチャ検索のコスト効率が向上します。

現在、Auto-Sklearn、Auto-PyTorch、Auto-WEKA などの AutoML パッケージは、あらゆる機械学習やデータ サイエンス ツールを強力に補完することができます。このうち、Auto-PyTorch は Apache 2.0 ライセンスを取得しており、Auto-Sklearn は BSD 3 条項ライセンスも使用できます。もちろん、これら 2 つのパッケージを適切に動作させるには、NumPy を 1.20.0 にアップグレードし、その他のさまざまなマイナーな修正も行う必要があります。

原題: AutoML: Auto-Sklearn と Auto-PyTorch の使用、著者: Kevin Vu

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

<<:  Facebook が ICCV 2021 で 2 つの 3D モデルを公開。自己監督が究極の答えか?

>>:  MITはAIを活用して3Dプリント用の新素材の発見を加速

ブログ    
ブログ    
ブログ    

推薦する

...

HumanGaussian オープンソース: ガウススプラッティングに基づく高品質な 3D 人体生成のための新しいフレームワーク

3D 生成の分野では、テキスト プロンプトに基づいて高品質の 3D 人間の外観と形状を作成することは...

ディープラーニングがインターネットにパーソナライゼーションをもたらす仕組み

[[195601]]ディープラーニングは機械学習のサブセットであり、さまざまな方法を使用して人工知能...

...

メタバースの開発にはどのような重要な技術が必要ですか?

メタバースは、信頼できる資産価値とアイデンティティ認証を備えた仮想アクティビティを実行するためのプラ...

...

...

[ディープラーニングシリーズ] PaddlePaddle と Tensorflow を使用したクラシック CNN ネットワーク AlexNet の実装

先週、私たちは PaddlePaddle と Tensorflow を使用して画像分類を実装し、自分...

大型モデル選択ガイドがここにあります! 6つのシナリオをカバーし、最適なモデルをマッチング

最近、Claude 2 が発表され、Google Bard が中国語をサポートし、Open AI が...

DFSアルゴリズムは5つの島の問題を克服する

[[429450]]この記事はWeChatの公開アカウント「labuladong」から転載したもので...

機械学習: 密度ベースの外れ値検出アルゴリズム

外れ値検出 (異常検出とも呼ばれる) は、機械学習において、予想とは大きく異なる動作をするデータ オ...

...

クロス検証は非常に重要です!

まず、クロス検証がなぜ必要なのかを理解する必要があります。クロス検証は、予測モデルのパフォーマンスと...

信頼できるAIを開発する方法

[[410884]]現在、人工知能の応用範囲と深さは絶えず拡大しており、情報インフラの重要な部分にな...