【人工智慧快速入門】讓電腦根據你指定的風格自動寫歌詞

【人工智慧快速入門】讓電腦根據你指定的風格自動寫歌詞

來自專欄阿里雲大學4 人贊了文章

自己動手,讓計算機自動生成你想要的歌詞,加入學習:edu.aliyun.com/workshop(原理和實操精講+在線動手GPU實驗)

難度:沒有任何基礎的用戶也可以根據我們提供的實驗步驟來完成這個實驗

釘釘搜索群組:23148043,加入阿里雲大學機器學習與人工智慧學習交流群。


8月3日,中國好聲音第三期,一位年僅24歲的清華博士,演唱了一首改編自周杰倫的《止戰之殤》和埃米納姆的經典作品《Rap God》,獲得了4位導師的轉身。

重點是,這首歌的部分歌詞是由這位博士使用人工智慧創作的,歌詞如下,隨便來感受一下:

夜 止在何方,夜 將她埋葬,夜 這血液里沸騰的海洋,她的天堂不再悲傷,美夢裡惆悵 卻是最終一場,愛 也會停在漆黑的地方,輕輕地在,孩子們眼中留下寄望,微弱的光隨風搖晃,被人遺忘 靜靜死亡,被血跡和慾望照亮的鋼槍,是誰在深淵裡瘋狂,破碎的誓言變模糊的力量,不能撫平城市的傷,一樣地偽裝著正義的重量,卻看見沉重的臉龐,恐懼里忘不掉漆黑的深夜裡,撫摸著我的月光,怎麼會,捨得就讓回憶沖走了相片,也沖走了往日時光,諷刺掛滿美麗的太陽,快看不到蔚藍的那個地方,再見了避風港好蒼涼,這殘酷的月光,他不諒不忘 只想止戰之殤

那麼問題來了,如何讓機器自動生成你想要的風格的歌詞呢?

通俗來講,首先你要給出想要的風格(提供大量同類風格的歌詞),讓機器去學習這種風格,然後就能自動生成類似風格的歌詞了。在具體實現上,就需要用到深度學習RNN(Recurrent Neural Network,循環神經網路)。

什麼是RNN

RNN,循環神經網路,背後的思想是利用順序信息,它針對系列中的每一個元素都執行相同的操作,每一個操作都依賴於之前的計算結果。換一種方式思考,可以認為RNN記憶了到當前為止已經計算過的信息。理論上,RNN可以利用任意長的序列信息。

上圖顯示了將RNN展開成一個完整的網路的過程。之所以用展開這個字眼,因為循環神經網路每一層(或者叫做每個時間點t)到下一層(下一個時間點),其變換的過程(權重W)是一致的。舉個例子說,如果關注的序列是包含5個單詞的句子,循環神經網路將會依據先後順序展開成五層神經網路,每個單詞為一層。RNN是根據下面的步驟來迭代和做計算的:

· 假定xt是時間t處的輸入,比如x1可以是句子中第二個單詞one-hot編碼後的詞向量。

· 假定st是次數t的隱藏狀態,這就是我們提到的神經網路的「記憶大腦」。stt由當前步驟的輸入和先前隱藏狀態共同計算求得:st=f(Uxt+Wst?1)。這個計算函數f通常是非線性的,比如說神經網路里經常用到的tanh或Relu. s?1是第一個隱藏狀態,通常我們把它初始化為0。

· ot是第t步的輸出。舉個例子說,如果要預測在之前的詞序列下,下一個詞是什麼,那可能拿到的是整個詞表中,每個詞的概率(通過softmax得到的),即ot=softmax(Vst)

針對上面的步驟:

· 可以直接把隱狀態st想作神經網路的「記憶體」,st捕捉和保留了之前時間點上的一些信息。輸出ot是由當前時間點t上的「所有記憶信息」來計算得到的。實際工程應用中,通常會做一些處理,因為實際上st並不能捕捉和保留之前的所有時間點的信息。

· 不像普通的深度神經網路,每一層和每一層之間都會有不同的權重參數,一個RNN神經網路共享同一組參數(U,V,W)(如圖中所示),每一步都一樣。這實際上表示我們在每一步到下一步都是做的同樣的操作,只是輸入不同。這樣的一個好處是,極大地減小了需要訓練和預估的參數量。

RNN自動生成歌詞原理

給定一個詞的序列,預測在前面的詞確定之後,每個詞出現的概率。語言模型可以度量一個句子出現的可能性,可以得到一個生成模型,通過對輸出概率採樣來生成新的文本。根據訓練數據的具體內容,可以生成任意內容。

很難,學不會?

我們在這個實驗中用到了一個工具——阿里雲機器學習PAI,通過拖拽和簡單配置,就能實現自動寫歌詞,就算你沒有任何人工智慧基礎,也可以很快學會。

快快加入課程:edu.aliyun.com/workshop(原理和實操精講+在線動手GPU實驗)

釘釘搜索群組:23148043,加入阿里雲大學機器學習與人工智慧學習交流群。


推薦閱讀:

「AI神捕」張學友
BC資訊|AI加持的榮耀V10,消費者會買單么?
從框架優缺點說起,這是一份TensorFlow入門極簡教程
DeepMind提出關係性深度強化學習:在星際爭霸2任務中獲得最優水平

TAG:人工智慧 | 自然語言處理 | 阿里雲 |