丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社
發(fā)送

0

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!

本文作者: AI研習(xí)社 編輯:賈智龍 2017-06-27 17:09
導(dǎo)語(yǔ):如何用神經(jīng)網(wǎng)絡(luò)寫出哈利 · 波特的咒語(yǔ)?

雷鋒網(wǎng)按:本文原載于微信公眾號(hào)DT財(cái)經(jīng)(微信號(hào):DTCaijing),作者Jacob Plaster,University of Hull。原文出處:《Artificial machine learning writer》。

英國(guó)赫爾大學(xué)的數(shù)據(jù)俠 Jacob 創(chuàng)造了一個(gè) “寫手” 程序,教大家如何模仿《哈利 · 波特》的口吻寫文章。文末還附加了 GitHub 的鏈接??梢杂H自上手試試。今后,哪怕沒(méi)有教授帶你玩,你也可以寫模仿 J.K Rowling 的為哈利寫一段咒語(yǔ)啦!

我創(chuàng)造了個(gè) “寫手” 程序,能模仿大師寫作風(fēng)格哦

我最近在赫爾大學(xué)完成了我高級(jí)人工智能課程單元。它特別棒。

“機(jī)器學(xué)習(xí)” 特別吸引我的地方在于,這項(xiàng)技術(shù)的潛在應(yīng)用看起來(lái)無(wú)窮無(wú)盡。當(dāng)我成功克服了(人工神經(jīng))網(wǎng)絡(luò)工作原理的陡峭學(xué)習(xí)曲線后,我決定是時(shí)候創(chuàng)作些什么了。

當(dāng)我瘋狂地在互聯(lián)網(wǎng)上搜索機(jī)器學(xué)習(xí)的奇跡時(shí),我偶然發(fā)現(xiàn)了個(gè) GitHub 上的項(xiàng)目,使用了時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)來(lái)模仿莎士比亞的寫作風(fēng)格。我很喜歡這個(gè)創(chuàng)意,也想試著創(chuàng)造一個(gè)不一樣的屬于我自己的版本。

(DT 君小課堂:RNN 包含輸入單元(input units)群、輸出單元(output units)群和隱藏單元(hidden units)。這些隱藏單元完成了最為有意思的工作,它們就像魔法,讓你輸入的話變得更像莎士比亞和哈利波特。訓(xùn)練 RNN 存在很多相當(dāng)具有挑戰(zhàn)性的難題,而這仍是一個(gè)非?;钴S的研究領(lǐng)域。感興趣的童鞋,可以戳這里來(lái)看。)

我寫了一個(gè)人工機(jī)器學(xué)習(xí) “寫手” 程序,試圖通過(guò)訓(xùn)練它來(lái)模擬人格并模仿著名作家的寫作風(fēng)格寫作。我們將嘗試模仿莎士比亞,J·K·羅琳和網(wǎng)絡(luò)上隨機(jī)的博客。

這個(gè) “寫手” 程序?qū)?huì)這么來(lái)做:通過(guò)訓(xùn)練數(shù)據(jù)逐步增加句量,利用 NLTK 把句子拆解轉(zhuǎn)換成詞性標(biāo)注,訓(xùn)練象征符號(hào)的結(jié)果,再次增加句量,然后訓(xùn)練詞性標(biāo)注出現(xiàn)的概率。

許多程序嘗試通過(guò)分析文本來(lái)預(yù)測(cè)特征出現(xiàn)的概率,然而并不準(zhǔn)確。而我的這種方法總是能有好的結(jié)果。

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!

數(shù)據(jù)分類和歸一,都是為了有一個(gè)好的模仿對(duì)象

(DT 君小課堂:接下來(lái)作者就要對(duì)數(shù)據(jù)做分類了。分類是數(shù)據(jù)挖掘領(lǐng)域中一項(xiàng)非常重要的任務(wù)。自然語(yǔ)言處理 NLP 中,一般的模式分類方法都可用于文本分類研究。常用的分類算法包括:決策樹分類法,樸素的貝葉斯分類算法、基于支持向量機(jī) (SVM) 的分類器,神經(jīng)網(wǎng)絡(luò)法,k - 最近鄰法 (k-nearest neighbor,kNN),模糊分類法等等。)

我決定使用 scikit 機(jī)器學(xué)習(xí)庫(kù)。它使用和配置起來(lái)都特別簡(jiǎn)單。Scikit 有著龐大的社區(qū),里面包含了大量的教程和許多可以用來(lái)訓(xùn)練你的神經(jīng)網(wǎng)絡(luò)的樣本數(shù)據(jù)集(example datasets)。我并沒(méi)有使用原有的樣本數(shù)據(jù)集,我想把無(wú)序的文本轉(zhuǎn)變成歸一化的訓(xùn)練數(shù)據(jù)。我創(chuàng)建的這個(gè) “寫手” 使用了多重支持向量機(jī)(SVM)的分類器,一個(gè)向量機(jī)(vector machine)用作句子結(jié)構(gòu)化,多個(gè)小型向量機(jī)用于對(duì)應(yīng)從詞匯表中選取單詞算法。

(DT 君小課堂:支持向量機(jī) (SVM) 通俗來(lái)講是一種二類分類模型,其學(xué)習(xí)策略便是間隔最大化,通過(guò)尋求結(jié)構(gòu)化風(fēng)險(xiǎn)最小來(lái)提高學(xué)習(xí)機(jī)泛化能力,實(shí)現(xiàn)經(jīng)驗(yàn)風(fēng)險(xiǎn)和置信范圍的最小化,從而達(dá)到在統(tǒng)計(jì)樣本量較少的情況下,亦能獲得良好統(tǒng)計(jì)規(guī)律的目的。想要深入了解,請(qǐng)看《理解 SVM 的三層境界》)

我目前使用的算法能有精準(zhǔn)的結(jié)果,這使得句式結(jié)構(gòu)化非常成功。這個(gè)階段中最大的障礙就是將訓(xùn)練數(shù)據(jù)歸一化(normals)。

(DT 君小課堂: 歸一化,簡(jiǎn)單的講就是由于數(shù)據(jù)單位不一致,所以需要將不同的數(shù)據(jù)進(jìn)行格式化,使之在指定的范圍內(nèi),比如在 0-1 之間。歸一化是為了后面數(shù)據(jù)處理的方便,其次是保正程序運(yùn)行時(shí)收斂加快。舉個(gè)栗子:一張表有兩個(gè)變量,一個(gè)是體重 kg,一個(gè)是身高 cm。假設(shè)一般情況下體重這個(gè)變量均值為 60kg,身高均值為 170cm。這兩個(gè)變量同樣是 100,對(duì)于身高來(lái)說(shuō)很矮,但對(duì)于體重來(lái)說(shuō)已經(jīng)很大了。所以歸一化就是要解決這個(gè)問(wèn)題,目的是可以用數(shù)值直接來(lái)進(jìn)行比較。)

我使用了 NLTK(Natural Language Toolkit 自然語(yǔ)言工具包)的庫(kù)來(lái)先將訓(xùn)練數(shù)據(jù)轉(zhuǎn)化成詞性標(biāo)注,例如:NN(名詞),DET(限定詞),$(符號(hào))等等。(然后再將其歸一化)

(DT 君小課堂:為什么要用 NLTK?從計(jì)算機(jī)處理的角度來(lái)看,英語(yǔ)或任何自然語(yǔ)言(口語(yǔ)或普通的語(yǔ)言)都是極不規(guī)范和不準(zhǔn)確的,需要對(duì)它們進(jìn)行整理。NLTK 還提供了一些 “詞干分析器” 類,以便進(jìn)一步規(guī)范化單詞。)

利用這些標(biāo)簽, 我可以對(duì)數(shù)據(jù)進(jìn)行歸一化,像下面這樣:

["The","cat","jumped"]= ['DET','NN','VP]

一旦歸一化以后就像下面這樣:

['DET','NN','VP]= [0.2237823,0.82392,0.342323]

現(xiàn)在我只需要得到一個(gè)目標(biāo)歸一化后的值(target normal),并且將它代入神經(jīng)網(wǎng)絡(luò)中開始訓(xùn)練即可。從二進(jìn)制大對(duì)象(BLOB,binary large object)中讀取文本時(shí),同時(shí)訓(xùn)練推測(cè)下一個(gè)順序詞是什么。因此:

["The","cat","jumped"]["towards"]= ['DET','NN','VP]["PRP"]= [0.2237823,0.82392,0.342323][0.12121212]

接下來(lái)要做的是獲取大量 J.K Rowling《Harry Potter》的資源并且準(zhǔn)備開始模仿她的句式結(jié)構(gòu)。

努力提高詞匯量,這樣才能 “喂飽” 我的 “寫手”

詞匯無(wú)疑是本項(xiàng)目中最難的部分,我很清楚地知道沒(méi)有理由不使用遞歸神經(jīng)網(wǎng)絡(luò),預(yù)測(cè)每個(gè)字母也是更好的辦法。然而,我選擇的方法產(chǎn)生非常酷炫的結(jié)果。

詞匯以詞序矩陣的形式包含在訓(xùn)練用的 BLOB 文件中。每個(gè)詞分解成了詞性標(biāo)注接著進(jìn)行歸一化。歸一化后的值和詞匯依然被備份著,因?yàn)樯院髮w一化的值轉(zhuǎn)換回單詞依然要利用此作為映射表。詞匯看起來(lái)像這樣:

[[(cat,[0.232342]),(bat,[0.2553535]),(dog,[0.345454]),(horse,[0.4544646])...]

[(run,[0.12131],(jump,0.232323),(fall,0.43443434)...]

...

1. 我們先使用小型文本 HarryPotter(small).txt(DT 君注:作者所使用的文本,請(qǐng)點(diǎn)擊 GitHub)。

這個(gè)數(shù)據(jù)集包含了 346 個(gè)訓(xùn)練向量(training vectors),是一個(gè)最小的訓(xùn)練集。

Input(輸入):"Harry dont look"(哈利不要看)

Output(輸出):"Harry dont look had at eleven for witches had been for eleven then with nothing had been for eleven then with nothing had been for eleven then with nothing had been for eleven"(哈利不要看,11,女巫,11,沒(méi)有事情,11,……)

Input(輸入):"Wizards sometimes do"(巫師有時(shí)候會(huì)做)

Output(輸出):"wizards sometimes do , Harry had been been , Harry had been been , Harry had been been , Harry had been been , Harry had been been , Harry had been been"(巫師有時(shí)候會(huì)做,哈利已經(jīng)在,哈利已經(jīng)在,哈利已經(jīng)在,哈利已經(jīng)在,哈利已經(jīng)在,哈利已經(jīng)在)

你可以看出神經(jīng)網(wǎng)絡(luò)很努力想要學(xué)習(xí)卻缺乏訓(xùn)練數(shù)據(jù)。它幾乎就陷入無(wú)限循環(huán)中了。

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!


2. 我們接下來(lái)開始使用中型文本 HarryPotter(medium).txt。

數(shù)據(jù)集包含了 2500 個(gè)訓(xùn)練向量。

Input(輸入):"Harry don't look"(哈利不要看)

Output(輸出):"Harry don't look , incredibly that a year for been parents in . followers , Harry , and Potter was been curse . Harry was up a year , Harry was been curse "(哈利不要看,難以置信地有一年父母在?;ǘ?,哈利,波特都被詛咒。哈利長(zhǎng)大了,哈利被詛咒)

Input(輸入):"Wizards sometimes do"(巫師有時(shí)候會(huì)做)

Output(輸出):"wizards sometimes do parents."(巫師有時(shí)候會(huì)對(duì)父母做)

現(xiàn)在你可以看出神經(jīng)網(wǎng)絡(luò)的輸出,已經(jīng)生成了我們預(yù)想的結(jié)果。因?yàn)樵黾恿擞?xùn)練數(shù)據(jù),它的性能得到了大幅度提升。

3. 使用大型文本 HarryPotter(large).txt,數(shù)據(jù)集包含了 4550 個(gè)訓(xùn)練向量。

Input(輸入):"Harry don't look"(哈利不要看)

Output(輸出):"Harry don't look Petunia Harry , incredibly had on the address."(哈利不要看佩妮哈利,有地址)

現(xiàn)在,除了一個(gè)錯(cuò)誤的停頓應(yīng)該在 Petunia(佩妮)與 Harry(哈利)之間,這個(gè)句子簡(jiǎn)直完美。

不過(guò),在這里,訓(xùn)練數(shù)據(jù)的增加反而給了一個(gè)負(fù)面的結(jié)果。這是罕見的。

Output(輸出):"Wizards sometimes do the address on the address on the address."

4. 接下來(lái),要使用另一個(gè)和哈利波特?zé)o關(guān)的大型文本 MacbookAirBlog(large).txt 了。

我隨機(jī)在一個(gè)博客上抓取了一份(與哈利波特?zé)o關(guān)的)文本。出乎意料的是這個(gè)數(shù)據(jù)集通常能產(chǎn)生更精確的結(jié)果。數(shù)據(jù)集中包含了 3576 個(gè)訓(xùn)練向量。

Input(輸入):"Harry don't look"(哈利不要看)

Output(輸出):"Harry don't look , also of a scaling on playing . Use for Control weight goes so cable and they've of placed it . you do to want things at at 2015."(哈利不要看,比例玩起來(lái)??刂谱饔皿w重所以有線和他們放在這里。2015 年你的確需要東西。)

Input(輸入):"Wizards sometimes do"(巫師有時(shí)候會(huì)做)

Output(輸出):"Wizards sometimes do When ports a scaling the have object , also of a scaling on playing ."(當(dāng)港口有貨,巫術(shù)有時(shí)候會(huì)做,比例玩起來(lái))

句式結(jié)構(gòu)是正確的,但詞匯有限。別急,10,000 以上訓(xùn)練向量的數(shù)據(jù)集馬上要來(lái)了(DT 君注:具體的訓(xùn)練請(qǐng)大家移步 GitHub

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!


預(yù)測(cè)和測(cè)試:“寫手” 不僅可以模仿利波特哦

當(dāng)我們?cè)囍鴮?duì)下一個(gè)順序的詞進(jìn)行預(yù)測(cè)時(shí),程序生成了非常準(zhǔn)確的結(jié)果。但是當(dāng)大量序列開始生成后,準(zhǔn)確率就下降了。我創(chuàng)建了一個(gè)測(cè)試單元用來(lái)比較生成的下一個(gè)詞與 J.K Rowling 實(shí)際創(chuàng)作中的詞。

我得到了下面的結(jié)果:

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!


通過(guò)命令行,你可以看到:

python3 main.py -utss -td "Datasets/MacbookAirBlog(large).txt"

我用同樣的想法測(cè)試了詞匯表:



  《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!

python3 main.py -utv -td "Datasets/MacbookAirBlog(large).txt"

如果預(yù)估超過(guò) 80% 就會(huì)被歸為 “通過(guò)(passed)”。

以上所有的結(jié)果都來(lái)自于 “未完結(jié)” 的程序,這也就是為什么它們看起來(lái)并沒(méi)有那么準(zhǔn)確。

哈利波特的數(shù)據(jù)集就來(lái)自于電子書,當(dāng)然你也可以用其他數(shù)據(jù)集。它是非常容易添加數(shù)據(jù)集,只要確保他是 BLOB 的格式。

作者注:本實(shí)驗(yàn)只應(yīng)用于教育,永不用于商業(yè)化。如果你想查看這個(gè)項(xiàng)目,你可以在 Github 上看到。

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

《哈利·波特》出版二十周年,教大家用神經(jīng)網(wǎng)絡(luò)寫咒語(yǔ)!

分享:
相關(guān)文章

編輯

聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請(qǐng)?jiān)L問(wèn):yanxishe.com
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)