【機器學習PAI實踐十一】機器學習PAI為你自動寫歌詞,媽媽再也不用擔心我的freestyle了(提供資料、程式碼

傲海發表於2017-07-24

背景

最近網際網路上出現一個熱詞就是“freestyle”,源於一個比拼rap的綜藝節目。在節目中需要大量考驗選手的freestyle能力,freestyle指的是rapper即興的根據一段主題講一串rap。freestyle除了考驗一個人rap的技巧,其實我覺得最難的是如何在短時間內在腦海中浮現出有韻律的歌詞。

PAI平臺是阿里雲人工智慧平臺,在上面可以通過最簡單的拖拉拽的方式,完成對各種結構化以及非結構化資料的處理。因為有了PAI,這種自動生成歌詞的事情都不再成為難題。我現在不光可以瞬間生成萬首歌詞,我還可以同時融合周杰倫、王力巨集、林俊杰、汪峰的歌詞風格在裡面,因為PAI利用深度學習能力可以快速的學習這些歌手的所有歌曲並且實現自己創作歌詞。不信?下面我就來show一下PAI的威力。

執行過程

  • 1.首先進入PAI:https://data.aliyun.com/product/learn
    開通機器學習以及機器學習內的GPU服務。

  • 2.訓練資料說明
    這裡我們的資料是一份txt檔案,檔案中包含了周杰倫、王力巨集、林俊杰、汪峰的歌詞,一共有接近300首歌,歌詞都是去掉標題等干擾因素的(花了好幾個小時整理)。資料截圖:

  • 3.實驗程式碼說明
    本實驗使用的是PAI內建的深度學習框架Tensorflow,使用的了seq2seq以及RNN網路進行歌詞語義的學習以及建模。使用train.py檔案生成模型,使用predict.py檔案進行預測。以下是部分網路結構搭建的截圖,大家可以在下方找到原始碼下載地址進行使用。(PS:例項程式碼雖然可以執行,但是資料IO採用的是低效方式,高效方式可以參考此文http://blog.csdn.net/buptgshengod/article/details/75218978)

        with tf.name_scope('model'):
            self.cell = rnn_cell.BasicLSTMCell(args.state_size)
            self.cell = rnn_cell.MultiRNNCell([self.cell] * args.num_layers)
            self.initial_state = self.cell.zero_state(
                args.batch_size, tf.float32)
            with tf.variable_scope('rnnlm'):
                w = tf.get_variable(
                    'softmax_w', [args.state_size, data.vocab_size])
                b = tf.get_variable('softmax_b', [data.vocab_size])
                with tf.device("/gpu:0"):
                    embedding = tf.get_variable(
                        'embedding', [data.vocab_size, args.state_size])
                    inputs = tf.nn.embedding_lookup(embedding, self.input_data)
            outputs, last_state = tf.nn.dynamic_rnn(
                self.cell, inputs, initial_state=self.initial_state)  
  • 4.資料上傳
    將實驗資料和程式碼檔案打包上傳到OSS(之所以打包是本文案例使用的是原生PYTHON的資料IO方式,需要程式碼和訓練資料組成同一個tar.gz檔案)。OSS是PAI可讀的物件儲存工具,具體方式可以參考此視訊連線https://help.aliyun.com/video_detail/54945.html

  • 5.搭建實驗
    在PAI的畫布拖動OSS以及Tensorflow元件搭建如下實驗,兩個Tensorflow節點分別對應著訓練和預測節點,先訓練生成寫歌模型,然後預測節點獲取模型自動生成歌詞。

    配置對應的執行程式碼路徑和輸出路徑,跟上面的OSS路徑對應。下圖是負責預測的Tensorflow節點配置。

    點選執行,PAI就開始學習歌詞並且嘗試自己寫作啦。

寫歌結果

經過差不多20分鐘的學習,PAI已經掌握了幾位歌壇大神的歌詞技巧,下面就看看PAI寫出來的歌詞是怎樣的。(歌詞需要在log中檢視,可以參考https://yq.aliyun.com/articles/72841

歌詞來了,

看上去寫的歌還算通暢,沒有出現特別多語病。當然,想寫出更好的詞,需要對訓練模型的迭代次數、詞長等引數進行不斷除錯,也可以多為PAI輸送更多的歌詞供訓練,因為300多的樣本還是略顯單薄。

下載地址

1.資料以及程式碼已經打包,直接上傳PAI配置路徑即可使用:下載地址
2.跟作者討論,可以訪問我的微信公眾號(PAI使用問題請在釘釘群裡問):
凡人機器學習

相關文章