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とのダンスは次世代の労働者にとって必修科目

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

推薦する

...

基本モデル + ロボット: これまでどこまで進んだのでしょうか?

ロボット工学は、特にスマートテクノロジーと組み合わせると、無限の可能性を秘めたテクノロジーです。近年...

ライトスピードコンピューティングが画期的な進歩を達成、AIトレーニングコストの問題が解決される可能性

画像出典: Visual China 1956年、アメリカの経済学者によって「人工知能」の概念が提唱...

スマートシティを計画する際には、アクセシビリティを忘れないようにしましょう

私たちは、使用するほぼすべてのものが「スマート」な時代に生きています。私たちのデバイスは、長い間、指...

Xunlei 創設者 Cheng Hao: 人工知能起業における 6 つの核心課題

[[205875]]まず第一に、今日ビジネスを始めようと決めたなら、インターネットよりも人工知能に重...

人事戦略と人材開発の形成における AI の役割

AI の力を活用することで、人事チームは複雑な課題に対処し、効率性を向上させ、前向きな職場環境を育む...

あるプログラマーは仕事を辞めて人工知能に転職した。4か月後に後悔し、多くの挫折を経験した。

転職すると3ヶ月貧乏になるが、転職すると3年間貧乏になるという諺があるようです。科学的な根拠はありま...

業界初のNLPシナリオ向けディープラーニングフレームワークがオープンソースに

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ガートナー: 2024 年の主要な戦略的テクノロジー トレンド

2024 年までに、AI は企業で主流となり、クラウド サービス、セキュリティ、持続可能性も影響力を...

AIはあらゆるブランドに影響を与えており、適応できないブランドは消滅するだろう

インテリジェントエージェントはブランドをスクリーニングし、商取引を再形成し、消費者の選択を導きます。...

デジタル変革時代の産業用ロボット開発の5大トレンド

適応性は常に成功する組織の基礎となる原則です。過去 2 年間、世界は不確実性に直面してきましたが、こ...

...

12年後の人工知能と人間はどうなっているでしょうか? 900人の専門家の意見はこちら

[[253534]]編集:Tailang一部のアナリストは、2030年までに人々は複雑なデジタルシス...