天天看點

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

來自阿裡巴巴的90後工程師蘆陽,用業餘時間開發了一套人工智能作詞程式——名字叫做MusicGo,這個程式經過蘆陽的“喂養”和設定,可以自己寫饒舌歌曲。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

蘆陽加入菜鳥也才僅僅四個月,這是他第一次參加雙11備戰。作為一名新員工,用原創嘻哈歌曲慶祝雙11的形式可謂獨一無二。人工智能和雙11也成為MusicGo的第一個主打的主題曲。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

今年的雙11非常有科技感,蘆陽就給MusicGo喂食了不少展現雙11科技的文章,比如菜鳥智慧物流、阿裡雲、天巡機器人、智能客服等關鍵詞,加上修飾韻腳,20分鐘後,一首《天貓雙11有嘻哈》就出爐了。

大家來感受下:

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

其實,今年雙11裡人工智能已經悄然成為了狂歡節的新興“職業”。不僅50%的背景故障修複由智能機器人負責,超級機器人倉群和一天内350萬的客戶量都是由智能機器人和“店小蜜”來完成的,可以說今年阿裡雙11開啟了人際協同時代的新篇章。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

這款蘆陽利用業餘時間編寫的人工智能程式MusicGo,可以分析Hip-hop的歌詞,将歌詞進行分詞以及拼音解析,進而進一步擷取每個詞的韻腳,形成龐大的分詞詞庫,扔進去一個詞就能出來很多押韻的相關詞彙。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

今天,阿裡妹也邀請到了作者蘆陽,請他來聊聊MusicGo的實作原理。其實沒有你想象的那麼難哦~

蘆陽:把AI寫歌兒這個事兒抽象起來看,其實是有一個模型,或者更通俗一點講,是有一個函數。就像Y=WX+B,給一個X,就可以産出一個Y。是以,問題的關鍵是我如何抽象出這個函數,并使其盡可能的精準。

深度學習可以做到的是抽象模型。舉例,我給出一段序列A作為X,給出一段序列B作為Y,它會通過不斷的有監督學習進而獲得函數Y=WX+B。接着,我又給出一段序列C作為X,給出一段序列D作為Y,它通過調整函數的參數盡力去滿足A->B && C->D。當學習的量達到一定階段的時候,模型也就基本可用了。

是以,我最終想要的效果是,一個比較合理的模型。這個模型可以做到,我給一個序列X,它可以去生成序列Y1,同時生成隐狀态H1。接着,用Y1以及H1作為輸入,繼續生成Y2和H2,以此類推。最終達到所定義序列長度标準。 

步驟為:

1. 收集歌詞

2. 對歌詞進行預處理,去除标點符号、特殊字元

3. 不斷訓練seq2seq模型

4. 使用模型産出歌詞

收集歌詞

我用Python爬取了XX音樂上的Hip-hop歌單,分析rapper如何押韻,收集到了幾萬首嘻哈歌詞。

資料預處理

原始的歌詞因為都是網友們上傳上去的,是以格式并不完全統一,而且還會有一些非主流符号。是以,需要把所有歌詞都進行同樣的預處理,過濾了标點符号、特殊字元,寫入到檔案中,目的是使剩下的文本足夠的整潔。

訓練模型

首先是建立LSTM模型。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

根據傳入的引狀态initial_state與序列inputs_split,執行rnn的decoder獲得輸出outputs_split。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

把輸出用softmax層處理,得到logits,與原本要學習的文本訓練targets,計算總損失函數值total_loss。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

循環去學習feed的文本,不斷調整模型,降低損失函數值。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

生成模型過程:

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

将足夠滿足目标的結果模型儲存下來,後續就可以用該模型去生成序列了。

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

産出歌詞

用上述産生的模型生成嘻哈歌曲,結果不太理想,給人的感覺是有點兒亂。因為嘻哈歌曲本身寫的東西都比較雜,并且由于時間原因,我也沒訓練模型太久,損失函數值不足夠低,導緻最後生成的歌曲,更雜了。

調整思路 

同時,還有個問題:嘻哈有了,“雙11”和“智能”呢?我就是讓模型學一輩子嘻哈,它也寫不出雙11和人工智能的東西,因為市面上并沒有同類型歌曲。是以,我決定回到原點,改變想法,目标導向。

用“人工智能”、“雙11”、“阿裡雲”、“阿裡小蜜”、“菜鳥機器人”等關鍵詞去爬科技類文章來feed模型,模型學會産出雙十一智能等相關的句子。同時,用嘻哈的句式長度去限制它,産出嘻哈歌曲。最後挑一些句子,加一點“韻腳”,就作為詞了。

人工修正智能

當然,用程式跑出的詞,和人工寫成的作品仍有些偏差。是以,我對機器自動生成的歌曲句式進行調整,使其更通順(手動捂臉)。

天貓雙11有嘻哈

(歌詞節選)

又來到一年 雙11

讓我買買買 花光所有力氣

又來到這一年雙11

讓我把指揮權交給智能機器

黑科技改變生活

打破包圍我們地域的封鎖

智能的技術連接配接你我

點亮雙11 夜裡萬家燈火

Yeah太多無法計算的價值

成千上萬訂單在指尖飛馳

阿裡雲讓所有訂單在雲端飛馳

阿裡小蜜 會語音文字圖像識别

學習能力 全部一整年都線上

人海戰術 全被科技改變

好用又百變 使用者舍不得說再見

還有機器人總動員在菜鳥倉庫上演

累計足夠智能 它們開始掌握主動權

揀選打包 順利通關

從杭州到東莞

從上海到中原

阿裡90後工程師,如何用AI程式寫出雙11打call歌?

今年雙11,作為工程師的你,在購物車裡放了哪些必敗單品?是心心念念的機械鍵盤、降噪耳機、無人機,還是為夫妻買的暖心手套、明星同款口紅?歡迎在留言區一起分享交流~

截止11月10日24點,點贊數最多的留言童鞋,将獲得精品好書《盡在雙11:阿裡巴巴技術演進與超越》一本。

原文釋出時間為:2017-11-9

本文作者:蘆陽

繼續閱讀