AutoGluonはオープンソースであり、人間の錬金術師を超えるパフォーマンスを発揮します

AutoGluonはオープンソースであり、人間の錬金術師を超えるパフォーマンスを発揮します

自動化された機械学習はどれほど優れたものになるのでしょうか?たとえば、MobileNet1.0 バックボーンの YOLO3 が ResNet-50 バックボーンの faster-rcnn を 6 ポイント上回るとします。 AutoGluon の出現は、人間の錬金術師の重要性がますます低下していることを示唆しています。

最近、Amazon はオープンソース コード ライブラリ AutoGluon を正式にリリースしました。開発者は、わずか数行のコードで AI 組み込みアプリケーションを作成できます。

AutoGluon は 1 か月以上前に GitHub でひっそりとリリースされましたが、最近になってようやく正式に一般公開されました。

開発者の Justin Ho が AutoGluon をチラ見しました。彼の感想は次のとおりです。

「ResNet-50 バックボーン + FasterRCNN がなぜ負けるのか?」

しかし、最終的なテスト セットの結果は非常に予想外で、NAS 検索による AutoGluon の結果は 6 ポイント高くなりました。

この点に関して、李牧氏は次のように述べた。

Zhihu ユーザー @Justin ho。

李牧は知乎でこう反応した。

AutoML では、1 回のトレーニング実行の約 15 倍のコストがかかりますが、得られる結果は手動チューニングで得られる結果よりも優れている可能性があります。これは主に CV、特に検出モデル向けです。GluonCV のモデルはすぐに大幅に改善されると予想されます。

AutoGluon はショートカットを使用します。現在、GluonCV と GluonNLP のタスクと追加の表形式データのみをサポートしています (以前の経験があるため)。したがって、以前の経験を取り入れることで検索スペースを減らし、速度を上げることができます。

もちろん、AutoGluon はまだ初期段階のプロジェクトであり、当初は公開する前にチームにもう少し開発時間を与えたいと考えていました。実行できる興味深いアプリケーション、アルゴリズム、ハードウェア アクセラレーションは、まだ数多くあります。友人の参加も大歓迎です。

AutoGluon: 新機能

図解されたAutoGluon。

AutoGluon は、使いやすくスケーラブルな AutoML をサポートし、画像、テキスト、表形式のデータをカバーするディープラーニングと実用的なアプリケーションに重点を置いています。 AutoGluon は機械学習の初心者と専門家の両方に適しており、次のことが可能になります。

  • わずか数行のコードで、データのディープラーニング プロトタイプを迅速に構築します。
  • 自動ハイパーパラメータ調整、モデル選択/アーキテクチャ検索、データ処理を活用します。
  • 専門知識がなくてもディープラーニング SOTA メソッドを自動的に使用します。
  • 既存のカスタム モデルとデータ パイプラインを簡単に強化したり、ユース ケースに基づいて AutoGluon をカスタマイズしたりできます。

サポート機能

AutoGluon は現在、次のアプリケーションをサポートしています。

  • テーブル予測: データ テーブル内の一部の列の値に基づいて他の列の値を予測します。
  • 画像分類: 画像内の主要なオブジェクトを識別します。
  • オブジェクト検出: 画像内の境界ボックスを利用して複数のオブジェクトを検出します。
  • テキスト分類: テキストの内容に基づいて予測を行います。

これらに加えて、AutoGluon はニューラル アーキテクチャ検索も実行でき、比較的簡単に使用できます。

AutoGluon の使い方は?公式ドキュメントには、Machine Heart によって抜粋されたサンプル コードが記載されています。

サンプルコード

テーブル予測

表形式(CSV ファイルなどとして保存)で表される標準データセットの場合、AutoGluon は他の列の値に基づいて 1 つの列の値を自動的に予測できます。 fit() を 1 回呼び出すだけで、データのクリーニング、特徴エンジニアリング、ハイパーパラメータの最適化、モデルの選択などの面倒なプロセスなしで、標準的な教師あり学習タスク (分類や回帰を含む) で高い精度を実現できます。

まず、AutoGluon に予測テーブル API をインポートします。

  1. autogluon を ag としてインポートautogluon をTask としてインポートTabularPrediction を

データをロードします (ここでは公式チュートリアルで提供されているデータセットを使用します)。

  1. train_data = task.Dataset(file_path= 'https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv' )train_data = train_data.head( 500 ) #高速化のため500 個のデータ ポイントをサブサンプリングしますdemoprint(train_data.head())

テーブル train_data の各行は、個別のトレーニング例に対応します。公式チュートリアルで提供されるデータセットでは、各行が 1 人の人物に対応し、表の列にはさまざまな統計的特徴が含まれています。

まず、これらの特徴を使って、ある人の収入が 50,000 ドルを超えるかどうかを予測してみましょう。関連情報は、表のクラス列に記録されています。

次にトレーニングします:

  1. dir = 'agModels-予測クラス'   # トレーニング済みモデルを保存するフォルダーを指定します。predictor = task.fit(train_data=train_data, label=label_column, output_directory=dir)  

テスト スイートをロードしてテストします。

  1. test_data = task.Dataset(file_path= 'https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv' )y_test = test_data[label_column] # 予測する値test_data_nolab = test_data.drop(labels=[label_column],axis=1) # 不正行為をしていないことを証明するためにラベル列を削除しますprint(test_data_nolab.head())  

画像分類

テーブル予測タスクと同様に、AutoGluon は画像を自動的に分類し、トレーニングに GPU を使用できます。

まず、画像分類 API を読み込みます。

  1. autogluon を ag としてインポートし、 autogluon からImageClassification を task としてインポートします

次に、画像分類器を構築するために必要なのは、数行のコードだけです (データセットはチュートリアルに付属するデータセットです)。

  1. 分類子 = task.fit(データセット、エポック = 10 、ngpus_per_trial = 1 、詳細 = False )

トレーニング結果の最良の部分を印刷します。

  1. print( 'トップ1の値acc: %.3f' % classifier.results[ 'best_reward' ])

単一の画像をテストします。ここでは、ag.get_gpu_count() を使用して GPU があるかどうかを検出します。GPU がある場合、値は 0 より大きくなります。

  1. #これをスキップ  CPU で FashionMNIST をトレーニングする場合。if ag.get_gpu_count() > 0 : image = 'data/test/BabyShirt/BabyShirt_323.jpg' ind, prob = classifier.predict (image)print( '入力画像は [%s] として分類され、確率は %.2f です。' % (dataset.init().classes[ind.asscalar()], prob.asscalar()))

テスト セットでテストし、結果を出力します。

  1. test_acc = classifier.evaluate(test_dataset)print( 'トップ1テストacc: %.3f' % test_acc)

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

ニューラル アーキテクチャ検索は、AutoML フレームワークにとって重要なアプリケーションです。最近、ENAS や ProxylessNAS などの人気の NAS 方式では、スーパーネットを構築し、異なるアーキテクチャ間で重みを共有することで検索速度を高速化しています。

プロキシレスNASアーキテクチャ。

AutoGluon も対応する関数を提供します。

「ハードウェア デバイスに適したニューラル ネットワーク アーキテクチャの検索」を例に挙げます。

まず、関連する API をインポートします。

  1. autogluon を agi としてインポートし、mxnet を mx としてインポートし、mxnet.gluon.nn を nn としてインポートします。

次に、MXNet フレームワークを使用して CNN インフラストラクチャを構築します。

  1. クラスIdentity(mx.gluon.HybridBlock): def hybrid_forward( self , F, x): return x クラス ConvBNReLU(mx.gluon.HybridBlock): def __init__( self , in_channels,channels,kernel,stride): super().__init__() padding = (kernel - 1 ) // 2   self .conv = nn.Conv2D(channels, kernel, stride, padding, in_channels=in_channels) self .bn = nn.BatchNorm(in_channels=channels) self .relu = nn.Activation( 'relu' ) def hybrid_forward( self , F, x): return  自己.relu(自己.bn(自己.conv(x)))

アーキテクチャ検索用の ENAS セルを構築します。

  1. autogluon.contrib.enasからインポート*
  2. @enas_unit ()クラスResUnit(mx.gluon.HybridBlock): def __init__( self , in_channels,channels, hidden_​​channels, kernel, stride): super().__init__() self .conv1 = ConvBNReLU(in_channels, hidden_​​channels, kernel, stride) self .conv2 = ConvBNReLU(hidden_​​channels,channels, kernel, 1 ) in_channels ==channelsかつstride == 1 の場合: self .shortcut = Identity()そうでない場合: self .shortcut = nn.Conv2D(channels, 1 , stride, in_channels=in_channels) def hybrid_forward( self , F, x): return  自己.conv2(自己.conv1(x)) +自己.shortcut(x)

Sequential Block を使用して ENAS ネットワークを作成します。

  1. mynet = ENAS_Sequential( ResUnit( 1 , 8 , hidden_​​channels=ag.space.Categorical( 4 , 8 ), kernel=ag.space.Categorical( 3 , 5 ), stride= 2 ), ResUnit( 8 , 8 , hidden_​​channels= 8 , kernel=ag.space.Categorical( 3 , 5 ), stride= 2 ), ResUnit( 8 , 16 , hidden_​​channels= 8 , kernel=ag.space.Categorical( 3 , 5 ), stride= 2 ), ResUnit( 16 , 16 , hidden_​​channels= 8 , kernel=ag.space.Categorical( 3 , 5 ), stride= 1 , with_zero= True ), ResUnit( 16 , 16 , hidden_​​channels= 8 ,カーネル=ag.space.Categorical( 3 , 5 )、ストライド= 1 、with_zero= True )、nn.GlobalAvgPool2D()、nn.Flatten()、nn.Activation( 'relu' )、nn.Dense( 10 、in_units= 16 )、)
  2.  
  3. mynet.initialize() #mynet.graph  

報酬関数を定義します。

  1. reward_fn = *lambda* メトリック、ネット: メトリック * ((net.avg_latency / net.latency) ** 0.1 )

最後に、トレーニングを開始します。

  1. スケジューラ = ENAS_Scheduler(mynet、train_set= 'mnist' 、reward_fn=reward_fn、batch_size= 128 、num_gpus= 1 、warmup_epochs= 0 、epochs= 1 、controller_lr=3e- 3 、plot_frequency= 10 、update_arch_frequency= 5 )scheduler.run()

AutoGluonの使い方

AutoGluon の Web サイトにはすでに多くのチュートリアルがあり、開発者はそれを使用してさまざまな構造化データと非構造化データを迅速に処理できます。経験豊富な開発者向けに、AutoGluon は一連のカスタマイズされたガイドも提供しており、AutoGluon の API を使用して予測パフォーマンスを自動的に向上させる方法を学習できます。

もちろん、AutoGluon はまだ改良中であるため、現在の AutoGluon ドキュメントでは主にコアプロセスがカバーされており、詳細に紹介されていない追加ツールがいくつかあると一部の開発者は述べています。

Zhihu のコメントでは、多くの開発者が AutoGluon は視覚的なタスクに非常に効果的であると述べています。AutoGluon に付属する YOLOV3 (mobilenet1.0 バックボーン) を使用しても、手動で調整した FasterRCNN (resnet50 バックボーン) よりも効果が優れています。

YOLOV3 は推論速度が優れている 1 段階検出器であるため、これは非常に驚くべきことです。 FasterRCNN などの 2 段階検出器の推論速度はそれほど速くありませんが、効果は一般的に優れています。言うまでもなく、AutoGluon が使用するバックボーン ネットワークは MobileNet 1.0 のみであり、その表現力は ResNet 50 に比べてはるかに劣ります。これら 2 つの要素を考慮すると、AutoGluon が手動の結果を上回るのは非常に驚くべきことです。

Li Mu 氏は以前、AutoGluon の使用コストは 1 回のトレーニング実行の約 15 倍であるため、15 回の試行では AutoGluon を超えるハイパーパラメータの完全なセットを見つけることができない可能性があると述べています。ただし、より優れた検索空間があれば、15 回のランダム検索でもより優れたハイパーパラメータを見つけることができると考える開発者もいます。 Li Mu 氏は次のように語っています。「AutoGluon 15 回の検索の結果は、Random Search 30 回の結果とほぼ同じですが、その前提は、検索空間が適切に構築されており、大きすぎず小さすぎないことです。」

現在、多くの開発者や研究者が AutoGluon の効果を試しています。簡単なパラメータ調整作業であれば機械の方がうまくできるのだから、機械に任せてみてはいかがでしょうか。アルゴリズムエンジニアがすべきことは、ビジネスとデータを理解し、新たな調整と革新を行うことです。

<<:  AIとのダンスは次世代の労働者にとって必修科目

>>:  顔認識の背後にあるもの:怖いのは技術ではない

ブログ    
ブログ    
ブログ    

推薦する

快手が1兆ドル規模のパラメータ推奨ランキングモデルを発表

正確な推奨システム モデルは、多くのインターネット製品の中核的な競争力です。パーソナライズされた推奨...

仮想誘拐:人工知能がランサムウェア詐欺を助長

もしあなたの配偶者や子供があなたに泣きながら電話をかけてきて、誘拐されたと告げたら、あなたは冷静で慎...

...

Verdict、2020年第1四半期のTwitterにおけるIoTトレンドトップ5を発表

私たちは、企業や専門家が IoT についてどう考えているかを知りたいと思っていますが、一般の人々はど...

チャットボットにおける2つの技術的火種: AIと機械学習

チャットボットの人気が高まるにつれて、競合するアプリケーション フレームワークが多数登場しました。 ...

人工知能は電子商取引の分野でどのような応用が期待できるでしょうか?

科学技術と経済社会の急速な発展に伴い、人工知能の応用はますます一般的になり、その発展は私たちの仕事や...

...

Java プログラミング スキル - データ構造とアルゴリズム「多方向検索ツリー」

[[391530]]二分木問題の分析バイナリツリーは動作効率が高いですが、問題点もあります。次のバ...

人工知能がデジタル変革の課題に対処できる 5 つの分野

[[378652]]調査会社IDCが最近発表した「世界の人工知能支出ガイド」によると、世界の人工知能...

AIは私たちが何を見て、何を考えるかを静かにコントロールしている

私たちの日常生活では、携帯電話のさまざまなアプリにますます依存するようになっています。外食時にレスト...

ChatGPT Plusの登録が停止、OpenAIは容量の課題に直面

11月16日、海外メディアの報道によると、OpenAIのCEOであるサム・アルトマン氏は最近、Dev...

...

8月1日から顔認識技術に新たな解釈が加わり、違反は法的リスクに直面することになる

[[414411]]近年、顔認識技術は、身元認証からコミュニティのアクセス制御まで幅広く使用され、多...

人工知能は、優秀な人材が良い就職機会を見つけるのにどのように役立つのでしょうか?

人工知能は、大企業が従業員を管理する方法に大きな影響を与えています。 [[360624]]世界経済は...

人工知能(AI)の開発と応用の観点から見たアルゴリズムテストのテスト戦略

人工知能の発展と応用に伴い、AI テストは徐々に私たちの視野に入ってきました。従来の機能テスト戦略は...