如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)-創(chuàng)新互聯(lián)

引言:

創(chuàng)新互聯(lián)專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營(yíng)銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

不知不覺(jué)春節(jié)假期馬上到來(lái),在今年的春節(jié)話題中,不難發(fā)現(xiàn),除了七大姑八大姨親切問(wèn)候這些常規(guī)話題,人工智能的蹤跡也是隨處可見(jiàn)。AI在以全新的面貌向我們展示值得期待的未來(lái),比如今天,我們可以用PaddlePaddle來(lái)嘗試寫副智能春聯(lián)。過(guò)年貼春聯(lián)已經(jīng)成為一個(gè)傳統(tǒng)習(xí)俗,而商場(chǎng)里可選的內(nèi)容不多,很多人想親自出馬,可惜又不大懂平仄對(duì)仗。能不能用人工智能幫我們寫春聯(lián)呢?今年春節(jié),百度、網(wǎng)易和央視網(wǎng)推出了“智能春聯(lián)H5”,只要給出2-4個(gè)漢字,它就能據(jù)此“寫”出一副非常具有觀賞性的藏頭春聯(lián)。

是什么讓機(jī)器擁有對(duì)春聯(lián)這項(xiàng)技能?通過(guò)智能春聯(lián)H5,“刷臉”對(duì)春聯(lián)只需幾秒就能實(shí)現(xiàn),而這背后是一系列“不可描述”的高深技術(shù)。視覺(jué)方面,主要應(yīng)用了人臉檢測(cè)、屬性分析、人臉融合等技術(shù),可對(duì)圖片中的人臉進(jìn)行檢測(cè),分析人臉對(duì)應(yīng)的年齡、性別、顏值、微笑指數(shù)、是否佩戴眼鏡等信息,并通過(guò)一個(gè)詞語(yǔ)概括人臉的特性;進(jìn)而將圖片中的人臉,與指定模板圖中的人臉進(jìn)行融合,得到新的圖片。這些技術(shù)的難度在于,需要對(duì)各種角度的人臉進(jìn)行檢測(cè),并且能夠提取人臉的五官特征,以便能夠生成與原始人臉相似,但也和模板人臉神似,且毫無(wú)違和感的新圖片。

其次是自然語(yǔ)言處理(NLP)方面,基于百度深度學(xué)習(xí)框架PaddlePaddle先進(jìn)的神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯技術(shù),可以將春聯(lián)創(chuàng)作轉(zhuǎn)化為“翻譯”的過(guò)程,所不同的是,翻譯是在兩種語(yǔ)言之間建立聯(lián)系,而春聯(lián)是在同一種語(yǔ)言中建立聯(lián)系。當(dāng)然,有些人可能會(huì)中招“彩蛋”,這些不是AI寫的春聯(lián)。比如你刷臉得出“戲精”這個(gè)關(guān)鍵詞,就會(huì)獲得一副“流量體質(zhì)天生有戲,主角光環(huán)蓋不住你”,橫批“過(guò)足戲癮”的春聯(lián),這么霸氣十足可是由人工專門為你埋的梗哦!這樣的春聯(lián)出現(xiàn)在朋友圈里,毫無(wú)疑問(wèn),點(diǎn)贊人數(shù)會(huì)瘋狂UpUpUp……

讓我們嘗試體驗(yàn)一下吧!PaddlePaddle作為深度學(xué)習(xí)框架,不僅支持深度學(xué)習(xí)算法的開(kāi)發(fā)和調(diào)研,而且官方發(fā)布的模型庫(kù)(https://github.com/PaddlePaddle/models)里面匯集了各種領(lǐng)先的圖像分類、自然語(yǔ)言處理算法。通過(guò)這些算法,我們可以很方便地實(shí)現(xiàn)各種好玩有趣的功能,比如:智能春聯(lián)。

如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)

智能春聯(lián)有各種玩法,可以根據(jù)用戶輸入的關(guān)鍵詞,生成一副對(duì)聯(lián),實(shí)現(xiàn)定制化的專屬春聯(lián),比如:用戶輸入“好運(yùn)”,百度的人工智能春聯(lián)生成程序就會(huì)創(chuàng)作出上下聯(lián)為“一年好運(yùn)滿園錦繡,萬(wàn)眾同心遍地輝煌”、橫批為“春光滿園”的春聯(lián);用戶輸入自己的名字,智能春聯(lián)生成程序可以把自己的名字藏在生成的春聯(lián)中,形成個(gè)性化非常強(qiáng)的春聯(lián),用來(lái)發(fā)送給自己的朋友;甚至用戶不需要輸入關(guān)鍵詞,只需要拍一張照片,然后就可以根據(jù)這張照片生成圖文并茂的春聯(lián)。那這些功能都是怎么做到的呢?這里我們給大家介紹一下如何用PaddlePaddle開(kāi)發(fā)一套專屬的智能春聯(lián)生成系統(tǒng)。

如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)

一、我們的系統(tǒng)需要先做到能理解圖像的內(nèi)容,比如:用戶輸入的到底是什么?

這是一個(gè)典型圖像分類的問(wèn)題,圖像分類是根據(jù)圖像的語(yǔ)義信息對(duì)不同類別圖像進(jìn)行區(qū)分,是計(jì)算機(jī)視覺(jué)中重要的基礎(chǔ)問(wèn)題,是物體檢測(cè)、圖像分割、物體跟蹤、行為分析、人臉識(shí)別等其他高層視覺(jué)任務(wù)的基礎(chǔ),在許多領(lǐng)域都有著廣泛的應(yīng)用。在深度學(xué)習(xí)時(shí)代,圖像分類的準(zhǔn)確率大幅度提升,PaddlePaddle在經(jīng)典的數(shù)據(jù)集ImageNet上,開(kāi)放了常用的模型,包括AlexNet、VGG、GoogLeNet、ResNet、Inception-v4、MobileNet、DPN(Dual Path Network)、SE-ResNeXt模型,同時(shí)也開(kāi)源了訓(xùn)練的模型方便用戶下載使用?;谶@些圖像分類算法,可以知道用戶輸入的類別,用類似的技術(shù),還可以知道一些更具體的屬性,比如:對(duì)于一張人臉的照片,可以知道性別、年齡這些屬性。有了圖片的這些特征和屬性之后,我們可以進(jìn)行關(guān)鍵詞擴(kuò)展。比如:對(duì)于年輕的女性可以聯(lián)想出一些關(guān)鍵詞“風(fēng)華絕代”、“秀麗”、“端莊”等等,對(duì)于小孩可以聯(lián)想出關(guān)鍵詞“活潑可愛(ài)”、“機(jī)智”、“勇敢”等等。

如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)

二、拿到這些關(guān)鍵詞之后,接下來(lái)的任務(wù)是什么?

根據(jù)一個(gè)關(guān)鍵詞,自動(dòng)生成一副相關(guān)的春聯(lián)。春聯(lián)的生成過(guò)程可以分成2個(gè)步驟,第一個(gè)步驟是從關(guān)鍵詞生成一副上聯(lián)。然后再根據(jù)上聯(lián)生成一副下聯(lián)。那么如何實(shí)現(xiàn)這2個(gè)生成步驟呢?我們發(fā)現(xiàn)這個(gè)任務(wù)跟機(jī)器翻譯很相似,可以用類似的技術(shù)來(lái)實(shí)現(xiàn)。機(jī)器翻譯(Machine Translation, MT)是用計(jì)算機(jī)來(lái)實(shí)現(xiàn)不同語(yǔ)言之間翻譯的技術(shù)。被翻譯的語(yǔ)言通常稱為源語(yǔ)言(Source Language),翻譯成的結(jié)果語(yǔ)言稱為目標(biāo)語(yǔ)言(Target Language)。機(jī)器翻譯即實(shí)現(xiàn)從源語(yǔ)言到目標(biāo)語(yǔ)言轉(zhuǎn)換的過(guò)程,是自然語(yǔ)言處理的重要研究領(lǐng)域之一。PaddlePaddle的模型庫(kù)(PaddlePaddle/models)里面,提供了兩個(gè)機(jī)器翻譯算法的實(shí)現(xiàn),一個(gè)是經(jīng)典的基于LSTM的Seq2Seq模型,另一個(gè)是最新的基于Attention的Transformer模型。 類比于機(jī)器翻譯任務(wù),可以把智能春聯(lián)輸入的關(guān)鍵詞看作是機(jī)器翻譯里的源語(yǔ)言句子,然后把根據(jù)關(guān)鍵詞生成的上聯(lián),看作是機(jī)器翻譯里的目標(biāo)語(yǔ)言譯文。相較于此前 Seq2Seq 模型中廣泛使用的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),使用(Self)Attention 進(jìn)行輸入序列到輸出序列的變換主要具有以下優(yōu)勢(shì):計(jì)算復(fù)雜度更小、計(jì)算并發(fā)度更高、更容易學(xué)到長(zhǎng)距離的依賴關(guān)系。我們推薦使用翻譯效果更好的Transformer模型,通常Transfomer可以得到比Seq2Seq更好的翻譯效果。

如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)

圖2. Transformer模型核心組件Multi-Head Attention

 def  scaled_dot_product_attention(q, k, v, attn_bias, d_key, dropout_rate):

        """

       Scaled  Dot-Product Attention

        """

       scaled_q  = layers.scale(x=q, scale=d_key**-0.5)

       product =  layers.matmul(x=scaled_q, y=k, transpose_y=True)

       if  attn_bias:

            product += attn_bias

       weights =  layers.softmax(product)

       if  dropout_rate:

            weights = layers.dropout(

                weights,

                dropout_prob=dropout_rate,

                seed=ModelHyperParams.dropout_seed,

                is_test=False)

       out =  layers.matmul(weights, v)

       return  out

圖3. Scaled Dot-Product Attention的PaddlePaddle代碼實(shí)現(xiàn)

三、選定了使用的生成算法之后,如何讓機(jī)器能夠?qū)W會(huì)寫春聯(lián)呢?

接下來(lái)就需要給系統(tǒng)準(zhǔn)備訓(xùn)練數(shù)據(jù)了,所謂“熟讀唐詩(shī)三百首”,對(duì)于機(jī)器來(lái)說(shuō),需要見(jiàn)到大量的春聯(lián),才能夠?qū)W會(huì)春聯(lián)里用詞和用字的規(guī)律。我們可以去互聯(lián)網(wǎng)上找到大量的春聯(lián)數(shù)據(jù),比如:“爆竹傳吉語(yǔ)”“臘梅報(bào)新春”等等,然后把它們作為訓(xùn)練數(shù)據(jù),通常需要幾萬(wàn)條。有了這些數(shù)據(jù)后,我們從上聯(lián)里抽取出關(guān)鍵詞,“爆竹”-> “爆竹傳吉語(yǔ)”,訓(xùn)練一個(gè)從關(guān)鍵詞到上聯(lián)的生成模型;然后我們?cè)儆谩氨駛骷Z(yǔ)”“臘梅報(bào)新春”訓(xùn)練一個(gè)從上聯(lián)到下聯(lián)的生成模型。

準(zhǔn)備好訓(xùn)練數(shù)據(jù)后,就可以啟動(dòng)Transformer模型的訓(xùn)練了,可以參考PaddlePaddle/models/neural_machine_translation/transformer里的命令。這個(gè)是英德翻譯的例子,在做關(guān)鍵詞到上聯(lián)的生成時(shí),需要把訓(xùn)練數(shù)據(jù)替換成“關(guān)鍵詞”到對(duì)應(yīng)“春聯(lián)上聯(lián)”的數(shù)據(jù);在做上聯(lián)到下聯(lián)生成時(shí),需要把訓(xùn)練數(shù)據(jù)替換成“春聯(lián)上聯(lián)”到對(duì)應(yīng)“春聯(lián)下聯(lián)”的數(shù)據(jù)。

python -u train.py \

  --src_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

  --trg_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

 --special_token  '<s>''<e>''<unk>' \

  --train_file_pattern  gen_data/wmt16_ende_data_bpe/train.tok.clean.bpe.32000.en-de \

--token_delimiter ' ' \

  --use_token_batch True \

 --batch_size  4096 \

 --sort_type  pool \

 --pool_size  200000

訓(xùn)練完成后就可以得到一個(gè)關(guān)鍵詞到上聯(lián)的生成模型,還有一個(gè)從上聯(lián)到下聯(lián)的生成模型。注意生成過(guò)程,需要執(zhí)行2次Transformer的預(yù)測(cè)過(guò)程,先輸入一個(gè)關(guān)鍵詞,生成上聯(lián);然后輸入生成的上聯(lián),再生成一個(gè)下聯(lián)。具體生成參考以下命令。

python -u infer.py \

  --src_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

  --trg_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

 --special_token  '<s>''<e>''<unk>' \

  --test_file_pattern  gen_data/wmt16_ende_data_bpe/newstest2016.tok.bpe.32000.en-de \

--token_delimiter ' ' \

 --batch_size 32  \

 model_path  trained_models/iter_100000.infer.model \

 beam_size 4 \

 max_out_len 255

根據(jù)以上PaddlePaddle官方模型庫(kù)提供的一些技術(shù),就可以實(shí)現(xiàn)一個(gè)好玩的智能春聯(lián)系統(tǒng)了。當(dāng)然還可以做很多有意思的擴(kuò)展,比如,可以增加一些古詩(shī)詞作為訓(xùn)練語(yǔ)料,使得生成的春聯(lián)內(nèi)容更為豐富;藏頭春聯(lián),把關(guān)鍵詞按字分開(kāi),通過(guò)Grid Beam Search的技術(shù),保證生成的關(guān)鍵詞會(huì)在春聯(lián)特定的位置出現(xiàn)。

感興趣的朋友,可以收集好春聯(lián)訓(xùn)練語(yǔ)料,便可嘗試實(shí)現(xiàn)一個(gè)好玩的智能春聯(lián)系統(tǒng)了。

Github地址:

https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleNLP/neural_machine_translation/transformer/README_cn.md

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:如何用深度學(xué)習(xí)框架PaddlePaddle實(shí)現(xiàn)智能春聯(lián)-創(chuàng)新互聯(lián)
分享鏈接:http://www.bm7419.com/article26/ihscg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)小程序開(kāi)發(fā)、用戶體驗(yàn)、定制開(kāi)發(fā)搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)