阿里90后工程师,如何用AI程序写出双11打call歌?
蘆陽加入菜鳥也才僅僅四個月,這是他第一次參加雙11備戰(zhàn)。作為一名新員工,用原創(chuàng)嘻哈歌曲慶祝雙11的形式可謂獨一無二。人工智能和雙11也成為MusicGo的第一個主打的主題曲。
今年的雙11非常有科技感,蘆陽就給MusicGo喂食了不少體現(xiàn)雙11科技的文章,比如菜鳥智慧物流、阿里云、天巡機器人、智能客服等關(guān)鍵詞,加上修飾韻腳,20分鐘后,一首《天貓雙11有嘻哈》就出爐了。
大家來感受下:
其實,今年雙11里人工智能已經(jīng)悄然成為了狂歡節(jié)的新興“職業(yè)”。不僅50%的后臺故障修復(fù)由智能機器人負(fù)責(zé),超級機器人倉群和一天內(nèi)350萬的客戶量都是由智能機器人和“店小蜜”來完成的,可以說今年阿里雙11開啟了人際協(xié)同時代的新篇章。
這款蘆陽利用業(yè)余時間編寫的人工智能程序MusicGo,可以分析Hip-hop的歌詞,將歌詞進(jìn)行分詞以及拼音解析,從而進(jìn)一步獲取每個詞的韻腳,形成龐大的分詞詞庫,扔進(jìn)去一個詞就能出來很多押韻的相關(guān)詞匯。
今天,阿里妹也邀請到了作者蘆陽,請他來聊聊MusicGo的實現(xiàn)原理。其實沒有你想象的那么難哦~
蘆陽:把AI寫歌兒這個事兒抽象起來看,其實是有一個模型,或者更通俗一點講,是有一個函數(shù)。就像Y=WX B,給一個X,就可以產(chǎn)出一個Y。所以,問題的關(guān)鍵是我如何抽象出這個函數(shù),并使其盡可能的精準(zhǔn)。
深度學(xué)習(xí)可以做到的是抽象模型。舉例,我給出一段序列A作為X,給出一段序列B作為Y,它會通過不斷的有監(jiān)督學(xué)習(xí)從而獲得函數(shù)Y=WX B。接著,我又給出一段序列C作為X,給出一段序列D作為Y,它通過調(diào)整函數(shù)的參數(shù)盡力去滿足A->B && C->D。當(dāng)學(xué)習(xí)的量達(dá)到一定階段的時候,模型也就基本可用了。
因此,我最終想要的效果是,一個比較合理的模型。這個模型可以做到,我給一個序列X,它可以去生成序列Y1,同時生成隱狀態(tài)H1。接著,用Y1以及H1作為輸入,繼續(xù)生成Y2和H2,以此類推。最終達(dá)到所定義序列長度標(biāo)準(zhǔn)。
步驟為:
1. 收集歌詞
2. 對歌詞進(jìn)行預(yù)處理,去除標(biāo)點符號、特殊字符
3. 不斷訓(xùn)練seq2seq模型
4. 使用模型產(chǎn)出歌詞
收集歌詞
我用Python爬取了XX音樂上的Hip-hop歌單,分析rapper如何押韻,收集到了幾萬首嘻哈歌詞。
數(shù)據(jù)預(yù)處理
原始的歌詞因為都是網(wǎng)友們上傳上去的,所以格式并不完全統(tǒng)一,而且還會有一些非主流符號。因此,需要把所有歌詞都進(jìn)行同樣的預(yù)處理,過濾了標(biāo)點符號、特殊字符,寫入到文件中,目的是使剩下的文本足夠的整潔。
訓(xùn)練模型
首先是建立LSTM模型。
根據(jù)傳入的引狀態(tài)initial_state與序列inputs_split,執(zhí)行rnn的decoder獲得輸出outputs_split。
把輸出用softmax層處理,得到logits,與原本要學(xué)習(xí)的文本訓(xùn)練targets,計算總損失函數(shù)值total_loss。
循環(huán)去學(xué)習(xí)feed的文本,不斷調(diào)整模型,降低損失函數(shù)值。
生成模型過程:
將足夠滿足目標(biāo)的結(jié)果模型保存下來,后續(xù)就可以用該模型去生成序列了。
產(chǎn)出歌詞
用上述產(chǎn)生的模型生成嘻哈歌曲,結(jié)果不太理想,給人的感覺是有點兒亂。因為嘻哈歌曲本身寫的東西都比較雜,并且由于時間原因,我也沒訓(xùn)練模型太久,損失函數(shù)值不足夠低,導(dǎo)致最后生成的歌曲,更雜了。
調(diào)整思路
同時,還有個問題:嘻哈有了,“雙11”和“智能”呢?我就是讓模型學(xué)一輩子嘻哈,它也寫不出雙11和人工智能的東西,因為市面上并沒有同類型歌曲。因此,我決定回到原點,改變想法,目標(biāo)導(dǎo)向。
用“人工智能”、“雙11”、“阿里云”、“阿里小蜜”、“菜鳥機器人”等關(guān)鍵詞去爬科技類文章來feed模型,模型學(xué)會產(chǎn)出雙十一智能等相關(guān)的句子。同時,用嘻哈的句式長度去約束它,產(chǎn)出嘻哈歌曲。最后挑一些句子,加一點“韻腳”,就作為詞了。
人工修正智能
當(dāng)然,用程序跑出的詞,和人工寫成的作品仍有些偏差。因此,我對機器自動生成的歌曲句式進(jìn)行調(diào)整,使其更通順(手動捂臉)。
天貓雙11有嘻哈
(歌詞節(jié)選)
又來到一年 雙11
讓我買買買 花光所有力氣
又來到這一年雙11
讓我把指揮權(quán)交給智能機器
黑科技改變生活
打破包圍我們地域的封鎖
智能的技術(shù)連接你我
點亮雙11 夜里萬家燈火
Yeah太多無法計算的價值
成千上萬訂單在指尖飛馳
Yeah太多無法計算的價值
阿里云讓所有訂單在云端飛馳
阿里小蜜 會語音文字圖像識別
學(xué)習(xí)能力 全部一整年都在線
人海戰(zhàn)術(shù) 全被科技改變
好用又百變 用戶舍不得說再見
還有機器人總動員在菜鳥倉庫上演
累計足夠智能 它們開始掌握主動權(quán)
揀選打包 順利通關(guān)
從杭州到東莞
從上海到中原
今年雙11,作為工程師的你,在購物車?yán)锓帕四男┍財纹?#xff1f;是心心念念的機械鍵盤、降噪耳機、無人機,還是為愛人買的暖心手套、明星同款口紅?歡迎在留言區(qū)一起分享交流~
原文發(fā)布時間為:2017-11-9
本文作者:蘆陽
本文來自云棲社區(qū)合作伙伴“阿里技術(shù)”
更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com
總結(jié)
以上是生活随笔為你收集整理的阿里90后工程师,如何用AI程序写出双11打call歌?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己写了一个多行文本溢出文字补全的小库,
- 下一篇: vue结合ueditor富文本编辑器(换