99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀業(yè)界 | 作畫、寫詩、彈曲子,AI還能這么玩
業(yè)界 | 作畫、寫詩、彈曲子,AI還能這么玩
2018-06-29
收藏

業(yè)界 | 作畫、寫詩、彈曲子,AI還能這么玩

隨著深度學(xué)習(xí)的發(fā)展,算法研究已經(jīng)進入一個新的領(lǐng)域:人工智能生成藝術(shù)作品。除了研究機器人、語言識別、圖像識別、NLP 等等這些,AI 還能作畫、寫詩、彈曲子。驚不驚喜,意不意外?


隨著深度學(xué)習(xí)取得的成功,算法研究已經(jīng)進入了另一個人類認為不受自動化技術(shù)影響的領(lǐng)域:創(chuàng)造引人入勝的藝術(shù)品。

在過去的幾年中,利用人工智能生成的藝術(shù)作品取得了很大的進步,其結(jié)果可以在 RobotArt 和英偉達舉辦的 DeepArt 大賽中看到:

雖然這些模型的技術(shù)成就令人印象深刻,但人工智能和機器學(xué)習(xí)模型能否真的像人一樣具有創(chuàng)造性仍是一個爭論的焦點。有些人認為,在圖像中建立像素的數(shù)學(xué)模型或者識別歌曲結(jié)構(gòu)中的順序依賴性并非什么真正具有創(chuàng)造性的工作。在他們看來,人工智能缺乏人類的感知能力。但我們也不清楚人類大腦正在做什么更令人印象深刻的事情。我們怎么知道一個畫家或者音樂家腦海中的藝術(shù)火花不是一個通過不斷練習(xí)訓(xùn)練出來的數(shù)學(xué)模型呢?就像神經(jīng)網(wǎng)絡(luò)這樣。

盡管「人工智能的創(chuàng)造力是否是真正的創(chuàng)造能力?」這一問題在短期內(nèi)還不太可能被解決,但是研究這些模型的工作原理可以在一定程度上對這個問題的內(nèi)涵作出解釋。本文將深入分析幾個通過機器生成的頂尖視覺藝術(shù)和音樂作品。具體而言,包括風(fēng)格遷移和音樂建模,以及作者所認為的該領(lǐng)域未來的發(fā)展方向。

風(fēng)格遷移

你對風(fēng)格遷移可能已經(jīng)很熟悉了,這可以說是最著名的一種通過人工智能生成的藝術(shù)。如下圖所示:

這究竟是怎么做到的呢?我們可以認為每張圖片由兩個部分組成:內(nèi)容和風(fēng)格。「內(nèi)容」就是圖片中所展示的客觀事物(如左圖中斯坦福大學(xué)的中心廣場),「風(fēng)格」則是圖畫的創(chuàng)作方式(如梵高《星月夜》中的螺旋、多彩的風(fēng)格)。風(fēng)格遷移是用另一種風(fēng)格對一幅圖像進行二次創(chuàng)作的任務(wù)。

假設(shè)我們有圖像 c 和 s,c 表示我們想要從中獲取內(nèi)容的圖像,s 表示我們想要從中獲取風(fēng)格的圖像。令 y^ 為最終生成的新圖像。直觀地說,我們希望 y^ 具有與 c 相同的內(nèi)容、與 s 相同的風(fēng)格。從機器學(xué)習(xí)的角度來看,我們可以將這個任務(wù)形式化定義為:最小化 y^ 和 c 之間的內(nèi)容損失以及 y^ 和 s 之間的風(fēng)格損失。

但是我們該如何得出這些損失函數(shù)呢?也就是說,我們?nèi)绾螐臄?shù)學(xué)上接近內(nèi)容和風(fēng)格的概念?Gatys,Ecker 和 Bethge 等人在他們具有里程碑意義的風(fēng)格遷移論文「A Neural Algorithm of Artistic Style」(https://arxiv.org/abs/1508.06576)中提出,這個問題的答案在于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的架構(gòu)。

假設(shè)你通過一個已經(jīng)被訓(xùn)練過的用于圖像分類 CNN 來饋送圖像。由于這樣的初始化訓(xùn)練,網(wǎng)絡(luò)中的每一個后繼層都被設(shè)置來提取比上一層更復(fù)雜的圖像特征。作者發(fā)現(xiàn)圖像的內(nèi)容可以通過網(wǎng)絡(luò)中某一層的特征映射來表示。然后,它的風(fēng)格就可以用特征映射通道之間的相關(guān)性來表示。這種相關(guān)性被存在了一個名為「Gram matrix」的矩陣中。

基于這種數(shù)據(jù)表征,作者將生成圖像的特征映射與內(nèi)容圖像之間的歐氏距離相加,從而構(gòu)建內(nèi)容損失。接下來,作者將每個風(fēng)格層特征映射的 Gram 矩陣之間的歐氏距離相加,從而計算風(fēng)格損失。在這兩個損失中,每一層的重要性都是根據(jù)一組參數(shù)來加權(quán),可以對這些參數(shù)進行調(diào)優(yōu)以獲得更好的結(jié)果。

形式上,令 y^ 為生成的圖像,并令 ?j(x) 為輸入 x 的 第 j 層特征映射。相應(yīng)的內(nèi)容損失可以被計算為:

令 Gj(x) 為 ?j(x) 的 Gtam 矩陣。相應(yīng)的風(fēng)格損失可以用以下形式計算,其中 F 表示弗羅貝尼烏斯范數(shù)(Frobenius norm):

最后,我們用權(quán)重αj 和βj 對所有 L 層求和,從而得到總的損失函數(shù)

也就是說,這意味著整個網(wǎng)絡(luò)的損失函數(shù) Ltotal 僅僅是內(nèi)容損失和風(fēng)格損失的加權(quán)組合。在這里,α_j 和 β_j 除了用來每一層加權(quán),還要控制忠實重建目標內(nèi)容和重建目標風(fēng)格之間的權(quán)衡。在每一步訓(xùn)練中,作者根據(jù)損失函數(shù)更新輸入的像素,然后反復(fù)進行這種更新操作,直到輸入圖像收斂到目標風(fēng)格圖像。

前饋風(fēng)格遷移

對于我們想要生成的每張圖像來說,解決這個優(yōu)化問題都需要時間,因為我們需要從隨機噪聲完美地轉(zhuǎn)化到具有特定風(fēng)格的內(nèi)容。事實上,本文的原始算法要花大約兩個小時的時間來制作一張圖像,這種情況激發(fā)了更快處理的需求。幸運的是,Jognson 等人(https://arxiv.org/abs/1603.08155)在 2016 年針對該問題發(fā)表了一篇后續(xù)論文,該文描述了一種實時進行風(fēng)格遷移的方法。

Johnson 等人沒有通過最小化損失函數(shù)從頭開始生成圖像,而是采取了一種前饋方法,訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)直接將一種風(fēng)格應(yīng)用到指定的圖片上。他們的模型由兩部分組成——一個圖像轉(zhuǎn)化網(wǎng)絡(luò)和一個損失網(wǎng)絡(luò)。圖像轉(zhuǎn)化網(wǎng)絡(luò)將一個常規(guī)圖像作為輸入,并且輸出具有特定風(fēng)格的相同圖像。然而,這個新模型也要使用一個預(yù)先訓(xùn)練好的損失網(wǎng)絡(luò)。損失網(wǎng)絡(luò)將測量特征重構(gòu)損失,后者是(圖片內(nèi)容的)特征表示和風(fēng)格重建損失之間的差異,而風(fēng)格重建損失則是通過 Gram 矩陣計算的圖像風(fēng)格之間的差異。

在訓(xùn)練過程中,Johnson 等人將微軟「COCO」數(shù)據(jù)集(http://cocodataset.org/#home)中的一組隨機圖像輸入到圖像轉(zhuǎn)化網(wǎng)絡(luò)中,并且用不同的風(fēng)格創(chuàng)作這些圖像(比如《星月夜》)。這個網(wǎng)絡(luò)被訓(xùn)練用于優(yōu)化來自于損失網(wǎng)絡(luò)的損失函數(shù)組合。通過這種方法生成的圖片質(zhì)量與原始圖片質(zhì)量相當,而且這種方法生成 500 張大小為 256*256 的圖片時速度比之前快了令人難以置信的 1060 倍。這個圖像風(fēng)格遷移的過程需要花費 50 毫秒:

在未來,風(fēng)格遷移可以被拓展到其它媒介上,比如音樂或詩歌。例如,音樂家可以重新構(gòu)思一首流行歌曲(比如 Ed Sheeran 的「Shape of You」),讓它聽起來有爵士的風(fēng)格?;蛘?,人們可以將現(xiàn)代的說唱詩轉(zhuǎn)換成莎士比亞的五步抑揚詩風(fēng)格。到目前為止,我們在這些領(lǐng)域還沒有足夠的數(shù)據(jù)來訓(xùn)練出優(yōu)秀的模型,但這只是時間問題。

對音樂建模

生成音樂建模是一個難題,但是前人已經(jīng)在這個領(lǐng)域做了大量工作。

當谷歌的開源人工智能音樂項目「Magenta」剛剛被推出時,它只能生成簡單的旋律。然而,到了 2017 年夏天,該項目生成了「Performance RNN」,這是一種基于 LSTM 的循環(huán)神經(jīng)網(wǎng)絡(luò)RNN),可以對復(fù)調(diào)音樂進行建模,包括對節(jié)拍和力度進行建模。

一首歌可以被看作一個音符序列,音樂便是一個使用 RNN 建模的理想用例,因為 RNN 正是為學(xué)習(xí)序列化模式而設(shè)計的。我們可以在一組歌曲的數(shù)據(jù)集合(即一系列代表音符的向量)上訓(xùn)練 RNN,接著從訓(xùn)練好的 RNN 中取樣得到一段旋律??梢栽凇窶agenta」的 Github 主頁上查看一些演示樣例和預(yù)訓(xùn)練好的模型。

之前 Magenta 和其他人創(chuàng)作的音樂可以生成可傳遞的單聲道旋律或者時間步的序列,在每一個時間步上,最多一個音符可以處于「開啟」狀態(tài)。這些模型類似于生成文本的語言模型:不同的是,該模型輸出的不是代表單個詞語的獨熱向量,而是代表音符的獨熱向量。

即使使用獨熱向量也意味著一個可能生成旋律的巨大空間。如果要生成一個由 n 個音符組成的序列——意味著我們在 n 個時間步的每一個時間步上都要生成一個音符——如果我們在每個時間步上有 k 個可以選擇的音符,那么我們最終就有 k 的 n 次方個有效向量序列。

這個空間可能相當大,而且到目前為止我們的創(chuàng)作僅僅局限于單聲道音樂,它在每個時間步上只播放一個音符。而我們聽到的大多數(shù)音樂都是復(fù)調(diào)音樂。復(fù)調(diào)音樂的一個時間步上包含多個音符。想象一下一個和弦,或者甚至是多種樂器同時演奏?,F(xiàn)在,有效序列的數(shù)量是巨大的——2^(k^n)。這意味著谷歌的研究人員必須使用一個比用于文本建模的 RNN 更復(fù)雜的網(wǎng)絡(luò):與單個詞語不同,復(fù)調(diào)音樂中每個時間步上可以有多個音符處于「開啟」狀態(tài)。

還有一個問題,如果你曾經(jīng)聽過電腦播放的音樂——盡管是人類創(chuàng)作的音樂——它仍然可能聽上去像機器人創(chuàng)作的。這是因為,當人類演奏音樂時,我們會改變節(jié)奏(速度)或者力度(音量),讓我們的表演有情感的深度。為了避免這種情況,研究人員不得不教該模型稍稍地改變節(jié)奏和力度?!窹erformance RNN」可以通過改變速度、突出某些音符以及更大聲或更柔和地演奏來生成聽起來像人類創(chuàng)作的音樂。

如何訓(xùn)練一個能有感情地演奏音樂的模型呢?實際上有一個數(shù)據(jù)集完美適用于這個目標。雅馬哈電鋼琴比賽數(shù)據(jù)集包括現(xiàn)場演出的 MIDI 數(shù)據(jù):每首歌被記錄為一個音符序列,每一個音符都包含關(guān)于演奏速度(彈奏音符的力度)和時間的信息。因此,除了學(xué)習(xí)要演奏哪些音符,「Performance RNN」還利用人類表演的信息去學(xué)習(xí)如何演奏這些音符。

最近的這些發(fā)展就好比是一個用一根手指彈奏鋼琴的六歲孩子與一個富有感情地演奏更復(fù)雜樂曲的鋼琴演奏家之間的區(qū)別。然而,還有很多工作要做:「Performance RNN」生成的一些樣本仍然一聽起來就是人工智能生成的,因為它們沒有固定的音調(diào)或者像傳統(tǒng)歌曲那樣重復(fù)主題或旋律。未來的研究可能會探索該模型能夠為鼓或者其他樂器做什么。

但是就目前的情況而言,這些模型已經(jīng)發(fā)展到足以幫助人們創(chuàng)造他們自己的音樂的地步。

人工智能生成藝術(shù)作品的未來

過去幾年中,機器學(xué)習(xí)和藝術(shù)的交叉研究迅速發(fā)展。這甚至成為了紐約大學(xué)一門課程的主題。深度學(xué)習(xí)的興起對這個領(lǐng)域產(chǎn)生了巨大的影響,重新喚起了人們對表示和學(xué)習(xí)如圖片、音樂、文本等大量非結(jié)構(gòu)化數(shù)據(jù)的希望。

我們現(xiàn)在正在探索機器生成藝術(shù)作品的可能性。未來,我們可能會看到機器學(xué)習(xí)成為藝術(shù)家的工具,比如為草圖上色、「自動完成」圖像、為詩歌或小說生成大綱等。

憑借更強的計算能力,我們可以訓(xùn)練能夠在諸如音頻、電影或其它形式復(fù)雜的媒介上泛化的模型。現(xiàn)在已經(jīng)有可以根據(jù)任何新文本生成相應(yīng)音頻和口型同步的視頻的模型。Mor 等人的「musical translation network」能夠在樂器和音樂流派之間進行一種聲音風(fēng)格遷移。Luan 等人展示了適用于高分辨率圖像的真實風(fēng)格遷移。這種機器生成的媒體文件的潛在應(yīng)用價值是巨大的。

我們可以無休止地討論通過人工智能生成的藝術(shù)作品是否真正具有創(chuàng)造性。但或許可以從另一個角度來看待這個問題。通過對人類的創(chuàng)造力進行數(shù)學(xué)化建模的嘗試,我們開始對人類的藝術(shù)作品為何如此具有感染力有了更深刻的理解。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }