如何用機(jī)器學(xué)習(xí)處理二元分類任務(wù)锈遥?

圖像是貓還是狗纫事?情感是正還是負(fù)?貸還是不貸所灸?這些問題丽惶,該如何使用合適的機(jī)器學(xué)習(xí)模型來解決呢?

問題

暑假后爬立,又有一批研究生要開題了钾唬。這幾天陸續(xù)收到他們發(fā)來的研究計(jì)劃大綱。

其中好幾個(gè)侠驯,打算使用機(jī)器學(xué)習(xí)做分類抡秆。

但是,從他們的文字描述來看吟策,不少人對(duì)機(jī)器學(xué)習(xí)進(jìn)行分類的方法儒士,還是一知半解

考慮到之前分享機(jī)器學(xué)習(xí)處理分類問題的文章檩坚,往往針對(duì)具體的任務(wù)案例着撩。似乎對(duì)分類問題的整體步驟與注意事項(xiàng)诅福,還沒有詳細(xì)論述過。于是我決定寫這篇文章睹酌,幫他們梳理一下权谁。

他們和你一樣剩檀,也是我專欄的讀者憋沿。

如果你對(duì)機(jī)器學(xué)習(xí)感興趣,并且實(shí)際遇到了分類任務(wù)沪猴,那我解答他們遇到的一些疑問辐啄,可能對(duì)于你同樣有用。

所以运嗜,我把這篇文章也分享給你壶辜。希望能有一些幫助。

監(jiān)督

監(jiān)督式機(jī)器學(xué)習(xí)任務(wù)很常見担租。主要模型砸民,是分類與回歸。

就分類問題而言奋救,二元分類是典型應(yīng)用岭参。

例如決策輔助,你利用結(jié)構(gòu)化數(shù)據(jù)尝艘,判定可否貸款給某個(gè)客戶演侯;

例如情感分析,你需要通過一段文字背亥,來區(qū)分情感的正負(fù)極性秒际;

例如圖像識(shí)別,你得識(shí)別出圖片是貓狡汉,還是狗娄徊。

今天咱們就先介紹一下,二元分類盾戴,這個(gè)最為簡(jiǎn)單和常見的機(jī)器學(xué)習(xí)應(yīng)用場(chǎng)景嵌莉。

注意要做分類,你首先得有合適的數(shù)據(jù)捻脖。

什么是合適的數(shù)據(jù)呢锐峭?

這得回到我們對(duì)機(jī)器學(xué)習(xí)的大類劃分。

分類任務(wù)可婶,屬于監(jiān)督式學(xué)習(xí)沿癞。

監(jiān)督式學(xué)習(xí)的特點(diǎn),是要有標(biāo)記矛渴。

例如給你1000張貓的圖片椎扬,1000張狗的圖片惫搏,扔在一起,沒有打標(biāo)記蚕涤。這樣你是做不了分類的筐赔。

雖然你可以讓機(jī)器學(xué)習(xí)不同圖片的特征,讓它把圖片區(qū)分開揖铜。

但是這叫做聚類茴丰,屬于非監(jiān)督學(xué)習(xí)

天知道天吓,機(jī)器是根據(jù)什么特征把圖片分開的贿肩。

你想得到的結(jié)果,是貓放在一類龄寞,狗放在另一類汰规。

但是機(jī)器抓取特征的時(shí)候,也許更喜歡按照顏色區(qū)分物邑。

結(jié)果白貓白狗放在了一個(gè)類別溜哮,黃貓黃狗放在了另一個(gè)類別。跟你想要的結(jié)果大相徑庭色解。

如果你對(duì)非監(jiān)督學(xué)習(xí)感興趣茂嗓,可以參考《如何用Python從海量文本抽取主題?》一文冒签。

所以在抛,要做分類,就必須有標(biāo)記才行萧恕。

但是標(biāo)記不是天上掉下來的刚梭。

大部分情況下,都是人打上去的票唆。

標(biāo)記

打標(biāo)記(Labeling)朴读,是個(gè)專業(yè)化而繁復(fù)的勞動(dòng)。

你可以自己打走趋,可以找人幫忙衅金,也可以利用眾包的力量。

例如亞馬遜的“土耳其機(jī)器人”(Amazon Mechanical Turk)項(xiàng)目簿煌。

別被名字唬住氮唯,這不是什么人工智能項(xiàng)目,而是普通人可以利用業(yè)余時(shí)間賺外快的機(jī)會(huì)姨伟。

你可以幫別人做任務(wù)拿傭金惩琉。任務(wù)中很重要的一部分,就是人工分類夺荒,打標(biāo)記瞒渠。

因此如果你有原始數(shù)據(jù)良蒸,但是沒有標(biāo)記,就可以把數(shù)據(jù)扔上去伍玖。

說明需求嫩痰,花錢找人幫你標(biāo)記。

類似的服務(wù)窍箍,國(guó)內(nèi)也有很多串纺。

建議找知名度比較高的平臺(tái)來做,這樣標(biāo)記的質(zhì)量會(huì)比較靠譜仔燕。

如果你還是在校學(xué)生造垛,可能會(huì)覺得這樣的服務(wù)價(jià)格太貴魔招,個(gè)人難以負(fù)擔(dān)晰搀。

沒關(guān)系。假如你的研究是有基金資助項(xiàng)目的一部分办斑,可以正大光明地找導(dǎo)師申請(qǐng)數(shù)據(jù)采集費(fèi)用外恕。

但若你的研究屬于個(gè)人行為,就得另想辦法了乡翅。

不少學(xué)生選擇的辦法鳞疲,是依靠團(tuán)隊(duì)支持。

例如找低年級(jí)的研究生幫忙標(biāo)記蠕蚜。

人家?guī)土嗣ι星ⅲ屇惆l(fā)表了論文,順利畢業(yè)靶累。你總得請(qǐng)大家吃一頓好吃的腺毫,是吧?

學(xué)習(xí)

有了標(biāo)記以后挣柬,你就能夠?qū)嵤┍O(jiān)督學(xué)習(xí)潮酒,做分類了。

這里我們順帶說一下邪蛔,什么叫做“機(jī)器學(xué)習(xí)”急黎。

這個(gè)名字很時(shí)髦。

其實(shí)它做的事情侧到,叫做“基于統(tǒng)計(jì)的信息表征”勃教。

先說信息表征(representation)。

你的輸入匠抗,可能是結(jié)構(gòu)化的數(shù)據(jù)故源,例如某個(gè)人的各項(xiàng)生理指標(biāo);可能是非結(jié)構(gòu)化數(shù)據(jù)戈咳,例如文本心软、聲音甚至是圖像壕吹,但是最終機(jī)器學(xué)習(xí)模型看到的東西,都是一系列的數(shù)字删铃。

這些數(shù)字耳贬,以某種形式排布。

可能是零維的猎唁,叫做標(biāo)量(scalar)咒劲;

可能是一維的,叫做向量(vector)诫隅;

可能是二維的腐魂,叫做矩陣(Matrice);

可能是高維的逐纬,叫做張量(Tensor)蛔屹。

但是,不論輸入的數(shù)據(jù)豁生,究竟有多少維度兔毒,如果你的目標(biāo)是做二元分類,那么經(jīng)過一個(gè)或簡(jiǎn)單甸箱、或復(fù)雜的模型育叁,最后的輸出,一定是個(gè)標(biāo)量數(shù)字芍殖。

你的模型豪嗽,會(huì)設(shè)置一個(gè)閾值。例如0.5豌骏。

超出這個(gè)數(shù)字的龟梦,被分類到一處。

反之肯适,被分類到另一處变秦。

任務(wù)完成。

那么模型究竟在做什么呢框舔?

它的任務(wù)蹦玫,就是把輸入的數(shù)據(jù),表征成最終的這個(gè)標(biāo)量刘绣。

打個(gè)不恰當(dāng)?shù)谋确接8龋腿缤?strong>高考。

每一個(gè)考生纬凤,其實(shí)都是獨(dú)特的福贞。

每個(gè)人都有自己的家庭,自己的夢(mèng)想停士,自己的經(jīng)歷挖帘,自己的故事完丽。

但是高考這個(gè)模型,不可能完整準(zhǔn)確表征上述全部細(xì)節(jié)拇舀。

它簡(jiǎn)單地以考生們的試卷答題紙作為輸入逻族,以一個(gè)最終的總成績(jī)作為輸出。

然后骄崩,劃定一個(gè)叫做錄取分?jǐn)?shù)線的東西聘鳞,作為閾值(判定標(biāo)準(zhǔn))。

達(dá)到或超出了要拂,錄取抠璃。

否則,不錄取脱惰。

這個(gè)分?jǐn)?shù)搏嗡,就是高考模型對(duì)每個(gè)考生的信息表征

所謂分類模型的優(yōu)劣枪芒,其實(shí)就是看模型是否真的達(dá)到了預(yù)期的分類效果彻况。

什么是好的分類效果谁尸?

大學(xué)想招收的人舅踪,錄取了(True Positive, TP);

大學(xué)不想招收的人良蛮,沒被錄瘸槁怠(True Negative, TN)。

什么是不好的分類效果决瞳?

大學(xué)想招收的人货徙,沒能被錄取(False Negative, FN)皮胡;

大學(xué)不想招收的人痴颊,被錄取了(False Positive, FP)。

好的模型屡贺,需要盡力增大 TP 和 TN 的比例蠢棱,降低 FN 和 FP 的比例。

評(píng)判的標(biāo)準(zhǔn)甩栈,視你的類別數(shù)據(jù)平衡而定泻仙。

數(shù)據(jù)平衡量没,例如1000張貓照片玉转,1000張狗照片,可以使用 ROC AUC殴蹄。

數(shù)據(jù)不平衡究抓,例如有1000張貓的照片猾担,卻只有100張狗的照片,可以使用 Precision 和 Recall 刺下,或者二者相結(jié)合的 F1 score垒探。

因?yàn)橛羞@樣明確的評(píng)估標(biāo)準(zhǔn),所以二元分類模型不能滿足于“分了類”怠李,而需要向著“更好的分類結(jié)果”前進(jìn)圾叼。

辦法就是利用統(tǒng)計(jì)結(jié)果,不斷改進(jìn)模型的表征方法捺癞。

所以夷蚊,模型的參數(shù)需要不斷迭代。

恢復(fù)高考后的40年髓介,高考的形式惕鼓、科目、分值唐础、大綱……包括加分政策等箱歧,一直都在變化。這也可以看作是一種模型的迭代一膨。

“表征”+“統(tǒng)計(jì)”+“迭代”呀邢,這基本上就是所謂的“學(xué)習(xí)”。

結(jié)構(gòu)化

看到這里豹绪,希望你的頭腦里已經(jīng)有了機(jī)器學(xué)習(xí)做二元分類問題的技術(shù)路線概貌价淌。

下面咱們針對(duì)不同的數(shù)據(jù)類型,說說具體的操作形式和注意事項(xiàng)瞒津。

先說最簡(jiǎn)單的結(jié)構(gòu)化數(shù)據(jù)蝉衣。

例如《貸還是不貸:如何用Python和機(jī)器學(xué)習(xí)幫你決策?》一文中巷蚪,我們見到過的客戶信息病毡。

處理這樣的數(shù)據(jù),你首先需要關(guān)注數(shù)據(jù)的規(guī)模屁柏。

如果數(shù)據(jù)量大啦膜,你可以使用復(fù)雜的模型。

如果數(shù)據(jù)量小前联,你就得使用簡(jiǎn)單的模型功戚。

為什么呢?

因?yàn)樵綇?fù)雜的模型似嗤,表征的信息就越多啸臀。

表征的信息多,未必是好事。

因?yàn)槟阕プ〉某肆#扔锌赡苁切盘?hào)豌注,也有可能是噪聲。

如果表征信息多灯萍,可是學(xué)習(xí)過的數(shù)據(jù)不多轧铁,它可能就會(huì)對(duì)不該記住的信息,形成記憶旦棉。

在機(jī)器學(xué)習(xí)領(lǐng)域齿风,這是最恐怖的結(jié)果——過擬合(overfitting)。

翻譯成人話绑洛,就是見過的數(shù)據(jù)救斑,分類效果極好;沒見過的數(shù)據(jù)真屯,表現(xiàn)很糟糕脸候。

舉一個(gè)我自己的例子。

我上學(xué)前班后沒多久绑蔫,我媽就被請(qǐng)了家長(zhǎng)运沦。

因?yàn)槲覞h語(yǔ)拼音默寫,得了0分配深。

老師嘴上說携添,是懷疑我不認(rèn)真完成功課;心里想的凉馆,八成是這孩子智商余額不足薪寓。

其實(shí)我挺努力的。

每天老師讓回家默寫的內(nèi)容澜共,都默了。

但是我默寫的時(shí)候锥腻,是嚴(yán)格按照“a o e i u ……”的順序默的嗦董。

因?yàn)槊刻於歼@樣默寫,所以我記住的東西瘦黑,不是每個(gè)讀音對(duì)應(yīng)的符號(hào)京革,而是它們出現(xiàn)的順序。

結(jié)果上課的時(shí)候幸斥,老師是這樣念的“a b c d e ……”

我毫無懸念沒跟下來匹摇。

我的悲劇,源于自己的心智模型甲葬,實(shí)際上只反復(fù)學(xué)習(xí)了一條數(shù)據(jù)“a o e i u ……”廊勃。每天重復(fù),導(dǎo)致過擬合经窖,符號(hào)出現(xiàn)在順序中坡垫,才能辨識(shí)和記憶梭灿。

因此,見到了新的組合方式冰悠,就無能為力了堡妒。

看,過擬合很糟糕吧溉卓。

確定了模型的復(fù)雜度以后皮迟,你依然需要根據(jù)特征多少,選擇合適的分類模型桑寨。

上圖來自于 Scikit-learn 万栅,我截取了其中“分類”模型部分,你可以做參考西疤。

注意模型的效果烦粒,實(shí)際上是有等級(jí)劃分的。

例如根據(jù) Kaggle 數(shù)據(jù)科學(xué)競(jìng)賽多年的實(shí)踐結(jié)果來看代赁,Gradient Boosting Machine 優(yōu)于隨機(jī)森林扰她,隨機(jī)森林優(yōu)于決策樹。

這么比有些不厚道芭碍,因?yàn)槿叩某霈F(xiàn)徒役,也是有時(shí)間順序的。

讓爺爺跟孫子一起賽跑窖壕,公平性有待商榷忧勿。

因此,你不宜在論文中瞻讽,將不同的分類模型鸳吸,分別調(diào)包跑一遍,然后來個(gè)橫向?qū)Ρ却鬁y(cè)評(píng)速勇。

許多情況下晌砾,這是沒有意義的。

雖然顯得工作量很大烦磁。

但假如你發(fā)現(xiàn)在你自己的數(shù)據(jù)集上面养匈,決策樹的效果就是明顯優(yōu)于 Gradient Boosting Machine ,那你倒是很有必要通過論文做出匯報(bào)都伪。

盡管大部分審稿人都會(huì)認(rèn)為呕乎,一定是你算錯(cuò)了

另一個(gè)需要注意的事項(xiàng)陨晶,是特征工程(feature engineering)猬仁。

什么叫特征工程呢?

就是手動(dòng)挑選特征,或者對(duì)特征(組合)進(jìn)行轉(zhuǎn)化逐虚。

例如《如何用Python和深度神經(jīng)網(wǎng)絡(luò)鎖定即將流失的客戶聋溜?》一文中,我們就對(duì)特征進(jìn)行了甄別叭爱。其中三列數(shù)據(jù)撮躁,我們直接剔除掉了:

  • RowNumber:行號(hào),這個(gè)肯定沒用买雾,刪除
  • CustomerID:用戶編號(hào)把曼,這個(gè)是順序發(fā)放的,刪除
  • Surname:用戶姓名漓穿,對(duì)流失沒有影響嗤军,刪除

正式學(xué)習(xí)之前,你需要把手頭掌握的全部數(shù)據(jù)分成3類:

  • 訓(xùn)練集
  • 驗(yàn)證集
  • 測(cè)試集

我在給期刊審稿的時(shí)候晃危,發(fā)現(xiàn)許多使用機(jī)器學(xué)習(xí)模型的作者叙赚,無論中外,都似乎不能精確理解這些集合的用途僚饭。

訓(xùn)練集讓你的模型學(xué)習(xí)震叮,如何利用當(dāng)前的超參數(shù)(例如神經(jīng)網(wǎng)絡(luò)的層數(shù)、每一層的神經(jīng)元個(gè)數(shù)等)組合鳍鸵,盡可能把表征擬合標(biāo)記結(jié)果苇瓣。

就像那個(gè)笑話說的一樣:

Machine Learning in a Nutshell:

Interviewer: what's you biggest strength?

Me: I'm a quick learner.

Interviewer: What's 11*11?

Me: 65.

Interviewer: Not even close. It's 121.

Me: It's 121.

而驗(yàn)證集的存在,就是為了讓你對(duì)比不同的超參數(shù)選擇偿乖,哪一組更適合當(dāng)前任務(wù)击罪。它必須用訓(xùn)練集沒有用過的數(shù)據(jù)。

驗(yàn)證集幫你選擇了合適的超參數(shù)后贪薪,它的歷史任務(wù)也就結(jié)束了媳禁。

這時(shí)候,你可以把訓(xùn)練集古掏、驗(yàn)證集合并在一起损话,用最終確定的超參數(shù)組合進(jìn)行訓(xùn)練,獲得最優(yōu)模型槽唾。

這個(gè)模型表現(xiàn)怎么樣?

你當(dāng)然需要其他的數(shù)據(jù)來評(píng)判光涂。這就是為什么你還要?jiǎng)澐殖隽硗獾臏y(cè)試集庞萍。

圖像

Franc?ois Chollet 在自己的書中舉過一個(gè)例子,我覺得很有啟發(fā)忘闻,一并分享給你钝计。

假如你看到了這樣的原始數(shù)據(jù):

你該怎么做分類?

有的同學(xué)一看是圖像,立刻決定私恬,上卷積神經(jīng)網(wǎng)絡(luò)债沮!

別忙,想想看本鸣,真的需要“直接上大錘”嗎疫衩?

別的不說,那一圈的刻度荣德,就對(duì)我們的模型毫無意義闷煤。

你可以利用特征工程,將其表達(dá)為這樣的坐標(biāo)點(diǎn):

你看涮瞻,這樣處理之后鲤拿,你立刻就擁有了結(jié)構(gòu)化數(shù)據(jù)。

注意這個(gè)轉(zhuǎn)換過程署咽,并不需要人工完成近顷,完全可以自動(dòng)化。

但是舉一反三的你宁否,估計(jì)已經(jīng)想到了“更好的”解決方案:

對(duì)窒升,這樣一來犁钟,表達(dá)鐘表時(shí)間的數(shù)據(jù)瓤逼,就從原先的4個(gè)數(shù)字薪夕,變成了只需要2個(gè)映凳。

一個(gè)本來需要用復(fù)雜模型解決的問題芜赌,就是因?yàn)楹?jiǎn)單的特征工程轉(zhuǎn)化轿秧,復(fù)雜度和難度顯著下降哼鬓。

其實(shí)送浊,曾經(jīng)人們進(jìn)行圖片分類青伤,全都得用特征工程的方法督怜。

那個(gè)時(shí)候,圖片分類問題極其繁瑣狠角、成本很高号杠,而且效果還不理想。

手動(dòng)提取的特征丰歌,也往往不具備良好的可擴(kuò)展性和可遷移性姨蟋。

于是,深度卷積神經(jīng)網(wǎng)絡(luò)就登場(chǎng)了立帖。

如果你的圖片數(shù)據(jù)量足夠多的話眼溶,你就可以采用“端到端”的學(xué)習(xí)方式。

所謂“端到端”晓勇,是指不進(jìn)行任何的特征工程堂飞,構(gòu)造一個(gè)規(guī)模合適的神經(jīng)網(wǎng)絡(luò)模型灌旧,扔圖片進(jìn)去就可以了。

但是绰筛,現(xiàn)實(shí)往往是殘酷的枢泰。

你最需要了解的,是圖片不夠多的時(shí)候铝噩,怎么辦衡蚂。

這時(shí)候,很容易出現(xiàn)過擬合薄榛。

因?yàn)樯疃壬窠?jīng)網(wǎng)絡(luò)讳窟,屬于典型的復(fù)雜模型。

這個(gè)時(shí)候敞恋,可以嘗試以下幾個(gè)不同的方法:

首先丽啡,如果有可能,搜集更多的帶標(biāo)注圖片硬猫。這是最簡(jiǎn)單的辦法补箍,如果成本可以接受,你應(yīng)該優(yōu)先采用啸蜜。

其次坑雅,使用數(shù)據(jù)增強(qiáng)(Data Augmentation)。名字聽起來很強(qiáng)大衬横,其實(shí)無非是把原始的數(shù)據(jù)進(jìn)行鏡像裹粤、剪裁、旋轉(zhuǎn)蜂林、扭曲等處理遥诉。這樣“新的”圖片與老圖片的標(biāo)注肯定還是一樣的。但是圖片內(nèi)容發(fā)生的變化噪叙,可以有效防止模型記住過多噪聲矮锈。

第三,使用遷移學(xué)習(xí)睁蕾。

所謂遷移學(xué)習(xí)苞笨,就是利用別人訓(xùn)練好的模型,保留其中從輸入開始的大多數(shù)層次(凍結(jié)保留其層次數(shù)量子眶、神經(jīng)元數(shù)量等網(wǎng)絡(luò)結(jié)構(gòu)瀑凝,以及權(quán)重?cái)?shù)值),只把最后的幾層敲掉臭杰,換上自己的幾層神經(jīng)網(wǎng)絡(luò)猜丹,對(duì)小規(guī)模數(shù)據(jù)做訓(xùn)練。

上圖同樣來自于 Franc?ois Chollet 的著作硅卢。

這種做法射窒,用時(shí)少,成本低将塑,效果還特別好脉顿。如果重新訓(xùn)練,圖片數(shù)少点寥,就很容易過擬合艾疟。但是用了遷移學(xué)習(xí),過擬合的可能性就大大降低敢辩。

其原理其實(shí)很容易理解蔽莱。

卷積神經(jīng)網(wǎng)絡(luò)的層次,越是靠近輸入位置戚长,表達(dá)的特征就越是細(xì)節(jié)盗冷;越到后面,就越宏觀同廉。

識(shí)別貓和狗仪糖,要從形狀邊緣開始;識(shí)別哆啦a夢(mèng)和瓦力迫肖,也一樣要從形狀邊緣開始锅劝。因此模型的底層,可以被拿來使用蟆湖。

你訓(xùn)練的故爵,只是最后幾層表征方式。結(jié)構(gòu)簡(jiǎn)單隅津,當(dāng)然也就不需要這么多數(shù)據(jù)了诬垂。

第四,引入 Dropout, Regularization 和 Early Stopping 等常規(guī)方法饥瓷。注意這些方法不僅適用于圖像數(shù)據(jù)剥纷。

以 Dropout 為例。假如一個(gè)模型因?yàn)閺?fù)雜呢铆,所以記住了很多噪聲晦鞋,那么訓(xùn)練的時(shí)候,每次都隨機(jī)將一定比例的神經(jīng)元“扔掉”(設(shè)置權(quán)重為0)棺克,那么模型的復(fù)雜度降低悠垛。而且因?yàn)殡S機(jī),又比降低層數(shù)與神經(jīng)元個(gè)數(shù)的固化模型適用性更高娜谊。

文本

前面說過了确买,機(jī)器不認(rèn)得文本,只認(rèn)得數(shù)字纱皆。

所以湾趾,要對(duì)文本做二元分類芭商,你需要把文本轉(zhuǎn)換成為數(shù)字。

這個(gè)過程搀缠,叫做向量化铛楣。

向量化的方式,有好幾種艺普。大致上可以分成兩類:

第一類簸州,是無意義轉(zhuǎn)換。也就是轉(zhuǎn)換的數(shù)字歧譬,只是個(gè)編號(hào)而已岸浑,本身并不攜帶其他語(yǔ)義信息。

這一類問題瑰步,我們?cè)凇?a href="http://www.reibang.com/p/29aa3ad63f9d" target="_blank">如何用Python和機(jī)器學(xué)習(xí)訓(xùn)練中文文本情感分類模型矢洲?》中,已經(jīng)非常詳細(xì)地介紹過了面氓。

你需要做的兵钮,包括分詞(如果是中文)、向量化舌界、去除停用詞掘譬,然后丟進(jìn)一個(gè)分類模型(例如樸素貝葉斯,或者神經(jīng)網(wǎng)絡(luò))呻拌,直接獲取結(jié)果葱轩,加以評(píng)估。

但是藐握,這個(gè)過程靴拱,顯然有大量的語(yǔ)義和順序信息被丟棄了。

第二類猾普,是有意義轉(zhuǎn)換袜炕。這時(shí)候,每個(gè)語(yǔ)言單元(例如單詞)轉(zhuǎn)換出來的數(shù)字初家,往往是個(gè)高維向量偎窘。

這個(gè)向量,你可以自己通過訓(xùn)練來產(chǎn)生溜在。

但是這種訓(xùn)練陌知,需要對(duì)海量語(yǔ)料進(jìn)行建模。

建模的過程掖肋,成本很高仆葡,占用龐大存儲(chǔ)空間,運(yùn)算量極大志笼。

因此更常見的做法沿盅,是使用別人通過大規(guī)模語(yǔ)料訓(xùn)練后的結(jié)果把篓。也就是我們?cè)?jīng)介紹過的詞嵌入預(yù)訓(xùn)練模型。

具體內(nèi)容嗡呼,請(qǐng)參見《如何用Python處理自然語(yǔ)言纸俭?(Spacy與Word Embedding)》和《如何用 Python 和 gensim 調(diào)用中文詞嵌入預(yù)訓(xùn)練模型?》南窗。

注意如果你有多個(gè)預(yù)訓(xùn)練模型可以選擇,那么盡量選擇與你要解決任務(wù)的文本更為接近的那種郎楼。

畢竟預(yù)訓(xùn)練模型來自于統(tǒng)計(jì)結(jié)果万伤。兩種差別很大的語(yǔ)料,詞語(yǔ)在上下文中的含義也會(huì)有顯著差異呜袁,導(dǎo)致語(yǔ)義的刻畫不夠準(zhǔn)確敌买。

如果你需要在分類的過程中,同時(shí)考慮語(yǔ)義和語(yǔ)言單元順序等信息阶界,那么你可以這樣做:

第一步虹钮,利用詞嵌入預(yù)訓(xùn)練模型,把你的輸入語(yǔ)句轉(zhuǎn)化為張量膘融,這解決了詞語(yǔ)的語(yǔ)義問題芙粱;

第二步,采用一維卷積神經(jīng)網(wǎng)絡(luò)(Conv1D)模型氧映,或者循環(huán)神經(jīng)網(wǎng)絡(luò)模型(例如 LSTM)春畔,構(gòu)造分類器。

注意這一步中岛都,雖然兩種不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)律姨,都可以應(yīng)用。但是一般而言臼疫,處理二元分類問題择份,前者(卷積神經(jīng)網(wǎng)絡(luò))表現(xiàn)更好。

因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)實(shí)際上已經(jīng)充分考慮了詞語(yǔ)的順序問題烫堤;而循環(huán)神經(jīng)網(wǎng)絡(luò)用在此處荣赶,有些“大炮轟蚊子”。很容易發(fā)生過擬合塔逃,導(dǎo)致模型效果下降讯壶。

實(shí)施

如果你了解二元分類問題的整體流程,并且做好了模型的選擇湾盗,那么實(shí)際的機(jī)器學(xué)習(xí)過程伏蚊,是很簡(jiǎn)單的。

對(duì)于大部分的普通機(jī)器學(xué)習(xí)問題格粪,你都可以用 Scikit-learn 來調(diào)用模型躏吊。

注意其實(shí)每一個(gè)模型氛改,都有參數(shù)設(shè)置的需要。但是對(duì)于很多問題來說比伏,默認(rèn)初始參數(shù)胜卤,就能帶來很不錯(cuò)的運(yùn)行結(jié)果。

Scikit-learn 雖好赁项,可惜一直不能很好支持深度學(xué)習(xí)任務(wù)葛躏。

因而不論是圖像還是文本分類問題,你都需要挑選一個(gè)好用的深度學(xué)習(xí)框架悠菜。

注意舰攒,目前主流的深度學(xué)習(xí)框架,很難說有好壞之分悔醋。

畢竟摩窃,在深度學(xué)習(xí)領(lǐng)域如此動(dòng)蕩激烈的競(jìng)爭(zhēng)環(huán)境中,“壞”框架(例如功能不完善芬骄、性能低下)會(huì)很快被淘汰出局猾愿。

然而,從易用性上來說账阻,框架之間確實(shí)有很大區(qū)別蒂秘。

易用到了一種極致,便是蘋果的 Turi Create 宰僧。

從《如何用Python和深度神經(jīng)網(wǎng)絡(luò)識(shí)別圖像材彪?》和《如何用Python和深度神經(jīng)網(wǎng)絡(luò)尋找近似圖片?》這兩篇文章中琴儿,你應(yīng)該有體會(huì)段化,Turi Create 在圖像識(shí)別和相似度查詢問題上,已經(jīng)易用到你自己都不知道究竟發(fā)生了什么造成,任務(wù)就解決了显熏。

但是,如果你需要對(duì)于神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行深度設(shè)置晒屎,那么 Turi Create 就顯得不大夠用了喘蟆。

畢竟,其開發(fā)的目標(biāo)鼓鲁,是給蘋果移動(dòng)設(shè)備開發(fā)者賦能蕴轨,讓他們更好地使用深度學(xué)習(xí)技術(shù)。

對(duì)于更通用的科研和實(shí)踐深度學(xué)習(xí)任務(wù)骇吭,我推薦你用 Keras 橙弱。

它已經(jīng)可以把 Theano, Tensorflow 和 CNTK 作為后端。

對(duì)比上面那張深度學(xué)習(xí)框架全家福,你應(yīng)該看到棘脐,Keras 覆蓋了 Google 和 微軟自家框架斜筐,幾乎占領(lǐng)了深度學(xué)習(xí)框架界的半壁江山。

照這勢(shì)頭發(fā)展下去蛀缝,一統(tǒng)江湖也說不定哦顷链。

為什么 Keras 那么厲害?

因?yàn)楹?jiǎn)單易學(xué)屈梁。

簡(jiǎn)單易學(xué)到嗤练,顯著拉低了深度學(xué)習(xí)的門檻。

就連 Tensorflow 的主力開發(fā)人員 Josh Gordon俘闯,也已經(jīng)認(rèn)為你根本沒必要去學(xué)習(xí)曾經(jīng)的 Tensorflow 繁復(fù)語(yǔ)法了潭苞。

直接學(xué) Keras ,用它完成任務(wù)真朗,結(jié)束。

另外僧诚,使用深度學(xué)習(xí)遮婶,你可能需要 GPU 硬件設(shè)備的支持。這東西比較貴湖笨。建議你采用租用的方式旗扑。

如何用云端 GPU 為你的 Python 深度學(xué)習(xí)加速?》提到的 FloydHub慈省,租賃一個(gè)小時(shí)臀防,大概需要1美元左右。注冊(cè)賬號(hào)就贈(zèng)送你2個(gè)小時(shí)边败;

至于《如何免費(fèi)云端運(yùn)行Python深度學(xué)習(xí)框架袱衷?》中提到的 Google Colab ,就更慷慨了——到目前為止笑窜,一直是免費(fèi)試用致燥。

喜歡請(qǐng)點(diǎn)贊。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹芝蘭”(nkwangshuyi)排截。

如果你對(duì)數(shù)據(jù)科學(xué)感興趣嫌蚤,不妨閱讀我的系列教程索引貼《如何高效入門數(shù)據(jù)科學(xué)?》断傲,里面還有更多的有趣問題及解法脱吱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市认罩,隨后出現(xiàn)的幾起案子箱蝠,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抡锈,死亡現(xiàn)場(chǎng)離奇詭異疾忍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)床三,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門一罩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撇簿,你說我怎么就攤上這事聂渊。” “怎么了四瘫?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵汉嗽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我找蜜,道長(zhǎng)饼暑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任洗做,我火速辦了婚禮弓叛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诚纸。我一直安慰自己撰筷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布畦徘。 她就那樣靜靜地躺著毕籽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪井辆。 梳的紋絲不亂的頭發(fā)上关筒,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音掘剪,去河邊找鬼平委。 笑死,一個(gè)胖子當(dāng)著我的面吹牛夺谁,可吹牛的內(nèi)容都是我干的廉赔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼匾鸥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蜡塌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勿负,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤馏艾,失蹤者是張志新(化名)和其女友劉穎劳曹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琅摩,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铁孵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了房资。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜕劝。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轰异,靈堂內(nèi)的尸體忽然破棺而出岖沛,到底是詐尸還是另有隱情,我是刑警寧澤搭独,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布婴削,位于F島的核電站,受9級(jí)特大地震影響牙肝,放射性物質(zhì)發(fā)生泄漏唉俗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一配椭、第九天 我趴在偏房一處隱蔽的房頂上張望互躬。 院中可真熱鬧,春花似錦颂郎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至坎背,卻和暖如春替劈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背得滤。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工陨献, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懂更。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓眨业,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沮协。 傳聞我的和親對(duì)象是個(gè)殘疾皇子龄捡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353