您的位置  生理疾病  尖銳濕疣

    性能超過人類煉丹師,AutoGluon 低調開源

    • 來源:互聯網
    • |
    • 2020-01-15
    • |
    • 0 條評論
    • |
    • |
    • T小字 T大字

    機器之心報道

    機器之心編輯部

    自動機器學習效果能有多好?比如讓 MobileNet1.0 backbone 的 YOLO3 超過 ResNet-50 backbone 的 faster-rcnn 六個點?AutoGluon 的問世說明,人類煉丹師可能越來越不重要了。

    近日,亞馬遜正式推出了開源代碼庫 AutoGluon。開發者依靠僅僅幾行代碼,就可以編寫出 AI 嵌入應用程序。一個多月前,AutoGluon 在 GitHub 已經悄悄上線,但最近幾天才正式公開發布。開發者「Justin ho」搶先體驗了一下 AutoGluon,以下是他的心得體會:

    「ResNet-50 backbone + FasterRCNN 騎臉怎么輸嘛。」但,最終測試集成績非常出人意料,AutoGluon 通過 NAS 搜索的結果直接高了六個點。

    對此,李沐表示:

    知乎用戶 @Justin ho。李沐在知乎上回應:

    AutoML 使用大概 15 倍于單次訓練的代價,得到的結果可能比手調的要好。這個主要是對于 CV 而言,尤其是 detection 模型,預計 GluonCV 里面模型很快贏來一大波提升。AutoGluon 取了一個巧,我們目前只支持 GluonCV 和 GluonNLP 里面的任務,和額外的 Tabular 數據(因為一個小哥之前有過經驗)。所以我們可以把以前的很有經驗東西放進去來減小搜參空間,從而提升速度。當然 AutoGluon 還是早期項目,我本來想是讓團隊再開發一些時間再公開。還有太多有意思的應用、算法、硬件加速可以做的。非常歡迎小伙伴能一起貢獻。

    AutoGluon:新特性

    圖解 AutoGluon。AutoGluon 支持易使用和易擴展的 AutoML,并專注于涵蓋圖像、文本或表格數據的深度學習和實際應用。AutoGluon 適用于機器學習初學者和專家,能夠使他們:

    通過幾行代碼即可快速地為數據構建深度學習原型方案;利用自動超參數微調、模型選擇/架構搜索和數據處理;無需專家知識即可自動使用深度學習 SOTA 方法;輕松地提升現有定制模型和數據管道,或者根據用例自定義 AutoGluon。支持功能現在 AutoGluon 已經支持了以下一些應用:

    表格預測:基于數據表中一些列的值預測其他列的值;圖像分類:識別圖像中的主要對象;對象檢測:借助圖像中的邊界框檢測多個對象;文本分類:基于文本內容做出預測。

    除了這些之外,AutoGluon 還可以進行神經架構搜索,使用起來較為簡便。怎樣使用 AutoGluon 呢?官方文檔中提供了示例代碼,機器之心進行了節選:示例代碼表格預測對于用表格形式(存儲為 CSV 文件等)來表示的標準數據集來說,AutoGluon 可以自動根據其他列的值來預測某一列值。只需要調用一次 fit(),就可以在標準的監督學習任務(包括分類和回歸)中實現很高的準確性,而無需數據清洗、特征工程、超參數優化、模型選擇等等繁瑣的流程。首先,導入 AutoGluon 中預測表格的相關 api。

    import autogluon as agfrom autogluon import TabularPrediction as task

    加載數據(這里使用官方教程提供的數據集)。

    train_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')train_data = train_data.head(500) # subsample 500 data points for faster demoprint(train_data.head())

    表格 train_data 中的每一行都對應單獨的訓練樣本。在官方教程提供的數據集中,每一行對應單個人,并且表格列包含各種統計特征。我們先來用這些特征預測一下某個人的收入是否超過 5 萬美元,相關信息記錄在該表的 class 列中。

    然后進行訓練:

    dir = 'agModels-predictClass' # specifies folder where to store trained modelspredictor = task.fit(train_data=train_data, label=label_column, output_directory=dir)

    加載測試集并測試:

    test_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')y_test = test_data[label_column] # values to predicttest_data_nolab = test_data.drop(labels=[label_column],axis=1) # delete label column to prove we're not cheatingprint(test_data_nolab.head())

    圖像分類和表格預測任務類似,AutoGluon 可以自動對圖像進行分類,并使用 GPU 進行訓練。首先加載圖像分類 api:

    import autogluon as agfrom autogluon import ImageClassification as task

    然后只需要短短幾行代碼就可以構建一個圖像分類器(數據集為教程自帶數據集):

    classifier = task.fit(dataset,epochs=10,ngpus_per_trial=1,verbose=False)

    打印訓練結果中最好的:

    print('Top-1 val acc: %.3f' % classifier.results['best_reward'])

    對單一圖像進行測試,這里的 ag.get_gpu_count() 用于檢測是否有 GPU,如有則大于 0。

    # skip this if training FashionMNIST on CPU.if ag.get_gpu_count() > 0: image = 'data/test/BabyShirt/BabyShirt_323.jpg' ind, prob = classifier.predict(image)print('Theinputpictureisclassifiedas[%s],withprobability%.2f.'%(dataset.init().classes[ind.asscalar()],prob.asscalar()))

    在測試集上測試并打印結果:

    test_acc = classifier.evaluate(test_dataset)print('Top-1 test acc: %.3f' % test_acc)

    神經架構搜索對于 AutoML 的框架來說,神經架構搜索是很重要的一個應用。近來,流行的 NAS 方法,如 ENAS 和 ProxylessNAS 都通過構建一個超網絡(supernet)并在不同的架構之間共享權重,從而加速搜索速度。

    ProxylessNAS 架構。AutoGluon 也提供了相應的功能。以「為硬件設備搜索合適的神經網絡架構」為例:首先,導入相關 api。

    import autogluon as agimport mxnet as mximport mxnet.gluon.nn as nn

    然后使用 MXNet 框架構建一個 CNN 的基礎架構:

    class Identity(mx.gluon.HybridBlock): def hybrid_forward(self, F, x): return xclass 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') defhybrid_forward(self,F,x): returnself.relu(self.bn(self.conv(x)))

    構建一個 ENAS 單元用于架構搜索:

    from autogluon.contrib.enas import *@enas_unit()class 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) if in_channels == channels and stride == 1: self.shortcut = Identity() else: self.shortcut=nn.Conv2D(channels,1,stride,in_channels=in_channels) defhybrid_forward(self,F,x): returnself.conv2(self.conv1(x))+self.shortcut(x)

    使用序列代碼塊(Sequential Block)創建 ENAS 網絡。

    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, kernel=ag.space.Categorical(3, 5), stride=1, with_zero=True), nn.GlobalAvgPool2D(), nn.Flatten(), nn.Activation('relu'), nn.Dense(10, in_units=16),)mynet.initialize()#mynet.graph

    定義獎勵函數:

    reward_fn = *lambda* metric, net: metric * ((net.avg_latency / net.latency) ** 0.1)

    最后開始訓練即可:

    scheduler = 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 網站已經有眾多教程了,開發者能用它快速處理各種結構化與非結構化數據。對于資深開發者,AutoGluon 還提供了一系列定制化的指南,我們能學會如何使用 AutoGluon 的 API 自動提升預測性能。當然,由于 AutoGluon 目前仍在完善中,有些開發者表示,目前 AutoGluon 文檔主要包含了核心流程,還有一些額外的工具沒有詳細介紹。在知乎評論中,很多開發者表示 AutoGluon 在視覺任務上的效果很好,甚至如果采用 AutoGluon 自帶的 YOLOV3(mobilenet1.0 backbone),它的效果還要優于手動調參的 FasterRCNN(resnet50 backbone)。這是非常令人驚訝的,畢竟 YOLOV3 是一種單階段的檢測器,它更擅長推理速度。而 FasterRCNN 這種二階段檢測器,雖然推理速度沒那么快,但效果一般要更好。更不用說 AutoGluon 采用的骨干網絡只是 MobileNet 1.0,它的表達能力遠沒有 ResNet 50 強。綜合這兩種因素,AutoGluon 超過手動效果,就顯得非常令人驚訝了。之前李沐就曾表示 AutoGluon 的使用代價差不多是單次訓練的 15 倍,所以在 15 次嘗試中,我們還真不一定能找到超越 AutoGluon 的整套超參。不過也有開發者認為要是有一個比較好的搜索空間,隨機搜索 15 次也能找到比較好的超參。李沐說:「AutoGluon 15 次 Search 的結果差不多類似于 Random Search 30 次,但前提是 Search Space 構造的比較好,不要太大與太小。」目前很多開發者與研究者都已經在嘗試 AutoGluon 的效果,有些簡單調參工作既然機器做得更好,那么為什么不交給它們呢?算法工程師該做的,應該是理解業務與數據,并作出新的調整與創新。參考鏈接:https://github.com/awslabs/autogluonhttps://www.amazon.science/amazons-autogluon-helps-developers-get-up-and-running-with-state-of-the-art-deep-learning-models-with-just-a-few-lines-of-codehttps://venturebeat.com/2020/01/09/amazons-autogluon-produces-ai-models-with-as-little-as-three-lines-of-code/

    免責聲明:本站所有信息均搜集自互聯網,并不代表本站觀點,本站不對其真實合法性負責。如有信息侵犯了您的權益,請告知,本站將立刻處理。聯系QQ:1640731186
    友薦云推薦
    熱網推薦更多>>
    主站蜘蛛池模板: 中文字幕在线看视频一区二区三区| 国产99久久亚洲综合精品| JIZZJIZZ亚洲日本少妇| 成人综合伊人五月婷久久| 九九热精品免费| 欧美性猛交xxxx乱大交3| 人妻久久久一区二区三区| 精品爆乳一区二区三区无码av| 国产卡一卡二卡3卡4乱码| 老司机在线精品| 国产调教视频在线观看| www..com色| 性生活大片免费看| 久久99国产乱子伦精品免费 | 欧美黑人乱大交| 人妻无码久久久久久久久久久| 精品视频一区二区三区免费| 国产三级在线观看完整版| 麻豆第一区MV免费观看网站| 国产福利拍拍拍| **aaaaa毛片免费| 国产肉体xxxx裸体137大胆| a级成人高清毛片| 夫不再被公侵犯美若妻| 一出一进一爽一粗一大视频| 成人免费a级毛片无码网站入口| 丰满岳乱妇一区二区三区| 日本电影里的玛丽的生活| 亚洲av永久无码嘿嘿嘿| 欧美人与动牲高清| 亚洲国产精品激情在线观看| 欧美精品一区二区三区在线| 亚洲精品成人网站在线观看 | 亚洲精品无码久久毛片| 男人j进女人p免费视频播放| 冲田杏梨AV一区二区三区| 美女解开胸罩摸自己胸直播| 国产一级一片免费播放视频| 说女生二哈是什么意思| 国产人妖XXXX做受视频| 被民工蹂躏的雯雅婷|