Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI有嘻哈!

AI有嘻哈!

作者头像
AI科技大本营
发布于 2018-09-28 02:01:25
发布于 2018-09-28 02:01:25
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

记者 | 阿司匹林

出品 | AI科技大本营

8月23日,“2018年全球高校学生DeeCamp AI训练营”在北大举行闭幕式,经过层层评比,来自全球高校的300学生组成的28支队伍选出了8支优胜队伍。其中,一只用AI自动生成嘻哈歌词的队伍获得了“最佳DEMO奖”。

AI写嘻哈歌词的水平如何?能达到以假乱真的地步吗?不看广告看疗效,我们先来猜猜下面的歌词哪些是AI写的:

不是乐理专修 做点儿曲式研究 我们的力量来自宇宙 自己的节奏 不是乐理专修 所有听的观众 打破他们传统 进到环球 继续让你感受

再来一个:

自己就带上了有色眼镜 金钱摧毁多少事情 瓦解你的中枢神经 自己就带上了有色眼镜 我只想把世界分的更清 却发现自己却模糊了心

正确答案是:第一行都是模型生成的,第二行是原作。可以看出,AI的效果还是不错的,至少挺押韵的。

那么,这个有嘻哈精神的团队到底是怎样搭建这个 AI 模型的?

首先我们需要定义这个问题,也就是根据一句歌词迭代生成一段嘻哈歌词。另外一个是押韵,这是嘻哈歌词一大特点。

清楚了问题,我们去调研一下已经有的文本声称方案,最终把它的优点和缺点列出来,然后我们选择了SequenceGAN作为基础模型,并且在这个之上提出我们的模型——SequenceGAN。

SequenceGAN 有两个组件,生成器、判读器,让生成器生成足以逼真的歌词。

我们在这个基础之上,有一个嘻哈生成网络。第一点是在这个之前我们增加了一个编码网络,将然后生成一些跟主题相关的歌词,第二点是把目标函数修改。

以下是SequenceGAN的效果,它有非常多的重复的语句,这就是GAN的一个通病,对于不同的输入,输出却很相同。

我们知道嘻哈歌手不可能一句话唱一整首,所以我们调研了一些文献,并且借鉴今年SentiGAN的想法,对生成器的目标函数进行修改,最后效果非常显著,有一个质的变化。

有了多样化的文本之后,我们下一步要解决的问题就是如何去实现押韵。我们尝试两种方案,一种是基于目标函数,增加押韵场景项,就好像考试的附加题,做对了给额外得分。但是我们希望它一直能够去做附加题,实现押韵的功能。但是它并不能很自主地学习到押韵的关。

最后我们尝试了基于规则的方式来实现这个押韵。比如输入“你真美丽”,我们根据这个i的韵脚去构建一个向量,做一个简单的操作,就能够得到必然是押韵的结果,同时可以控制押韵的概率。

▌附完整解读

项目作者:孙蒙新(厦门大学)、项瑞昌(华中科技大学)、伊玮雯(北京邮电大学)、陆亦扬(合肥工业大学)、石华(西南石油大学)、汪自力(西安电子科技大学)、庞雲升(重庆大学)、周子群(东北大学)、王超群(北京林业大学)、詹珏岑(Vandernilt University)

1、数据

我们一共使用了 10w 条嘻哈歌词,并且已经将一些不符合社会主义核心价值观的句子标注了出来。数据的预处理主要步骤如下:

  • 在对句子进行筛选之后,我们利用 Jieba 进行分词,观察到单句长度集中在 8~10 左右;
  • 在利用 Tensorflow 中的 Tokenizer 进行 tokenize 并构建 word2idex 字典后,词表大小在 11000 左右,考虑到这个大小还可以接受,没有做限制词表大小的操作;
  • 利用 pad_sequence 将句子 padding 到 20(和 SeqGAN 中相同);
  • 构建 x-y pair,利用上一句预测下一句(导师后来建议可以借鉴用 Skip-gram 的思路,同时预测上一句和下一句,但没有时间去尝试了),分割数据集。

训练数据地址:

https://drive.google.com/drive/folders/1QrO0JAti3A3vlZlUemouOW7jC3K5dFZr)

2、模型

我们的生成模型的整体基于 SeqGAN,并对其做了一些修改,模型架构如下:

主要改动有两点:

1.增加输入语句的编码:这一点类似 Seq2Seq 的 Encoder,SeqGAN 原本的 initial state 是全 0 的,为了将上文的信息传递给生成器,我们采用了一个简单的全连接层(Fully Connected Layer),将输入句子的 Word Embedding 经过一个线性变化之后作为生成器的 LSTM。事实上也可以尝试使用 RNN(LSTM)来作为 Encoder,不过这样模型的速度可能会比较慢。

2.将原先 Generator 的 Loss Function 改为 Penalty-based Objective:在训练模型的过程中我们发现,模型在 Adversarial Training 多轮之后出现了严重的 mode collapse 问题,比如:

别质疑自己 遮罩错的消息不要过得消极 世间人都笑我太疯癫 世间人都笑我太疯癫 守护地狱每座坟墓 世间人都笑我太疯癫 你不知道rapper付出多少才配纸醉金迷 世间人都笑我太疯癫 但却从来没有心狠过 如果你再想听 你不知道rapper付出多少才配纸醉金迷 你不知道rapper付出多少才配纸醉金迷

可以看到“世间人都笑我太疯癫”和“你不知道rapper付出多少才配纸醉金迷”占据了我们生成的结果。mode collapse,简单来说就是输入的改变不会影响生成的结果。为此我们调研了一些 Paper,最终采用了SentiGAN 中提出的 Penalty-based Objective Function:

3、押韵

嘻哈歌词非常重要的一个特点就是句与句之间的押韵,我们在实现这一功能的时候尝试了两种方案:

1.Reward based,在 reward 函数上增加额外的押韵奖赏项, r(rhyme):对 Generator 的生成的句子和输入的句子进行押韵的判断,如果押韵,则提供额外的奖赏。

2.Rule-based,生成时只对押韵的词进行采样:在生成句尾的词的概率分布时候,通过获取和输入句尾押韵的词,只在这些押韵的词进行采样。

方法一,如果能够通过设计 reward function 就能实现押韵的功能,那模型就是完全 end2end,非常 fancy 了。但是理想很丰满,现实很骨感,经过几天的调整押韵奖赏的权重,都没能看到押韵率(我们设置的用于检测押韵奖赏效果的指标,每个 batch 中和 input 押韵的句子的比例)的上升 。我们怀疑是这种奖赏的结合会让 Generator 产生混淆,并不能明确自己 reward 来自何处,应该需要更加具体的一些限制才能够实现这一方法。

方法二,一开始我是拒绝这么做的,用基于规则的方法不是我的理想。但是为了做出产品来,我还是屈服了。但还有一个问题摆在面前:怎么知道生成的是句尾呢?导师提醒我们,我们可以把输入倒过来。这是 NMT 中常用的一个手段,对于 LSTM,句子是真的还是反的差别不大,即使有差别,也可以通过一个 Bi-LSTM 来捕获不同顺序的信息。而为了知道哪些字词是押韵的,我们实现制作了一张 vocab_size x vocab_size 的大表 rhyme,如果两个词(index 分别为 i, j)押韵,则 rhyme[i, j] 非 0,否则为 0。

如上图所示,如果我们的输入为“你真美丽”,句尾词为“美丽”,韵脚为 i;最终采样结果只会在押韵的词中采样,示例的采样结果为“春泥”。

据此,我们就可以对生成过程的第一个词的词表分布进行一个 mask 操作,使得非押韵的词的概率都变成 0,就能够保证押韵了,代码片段如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 获取 input 的最后一个词
first_token = self.inputs[:, 0]  # (batch_size, 1)
# 控制押韵的概率, 现在设置为 1.0 ,即 100% 押韵
select_sampler = Bernoulli(probs=1.0, dtype=tf.bool)
select_sample = select_sampler.sample(sample_shape=self.batch_size)
# 获取对应的 index 押韵行
token_rhyme = tf.cast(tf.gather(self.table, first_token), tf.float32)
# 进行 mask
prob_masked = tf.where(select_sample, tf.log(tf.multiply(token_rhyme, tf.nn.softmax(o_t))),tf.log(tf.nn.softmax(o_t)))
# 根据 mask 之后的概率分布进行采样
next_token = tf.cast(tf.reshape(tf.multinomial(prob_masked, 1), [self.batch_size])

不过这个制表的过程比较耗费时间(大约跑了 3 个小时,i7)。另一种思路是可以根据韵脚对字词进行分类,将相同韵脚的词的 index 编到一起,这样我们可以通过获取每个词的韵脚来知道目标词的范围,而不用挨个的去判断是否押韵。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python做一个藏头诗生成器
前几天给大家介绍了有意思的藏头诗,今天我们就用Python来自己根据输入语句实现自动生成藏头藏尾诗吧。
老肥码码码
2020/06/02
1.4K0
Python做一个藏头诗生成器
干货|GAN for NLP (论文笔记及解读)
GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响。“深度解读:GAN模型及其在2016年度的进展”[1]一文对过去一年GAN的进展做了详细介绍,十分推荐学习GAN的新手们读读。这篇文章主要介绍GAN在NLP里的应用(可以算是论文解读或者论文笔记),并未涉及GAN的基本知识 (没有GAN基础知识的小伙伴推荐先看[1],由于本人比较懒,就不在这里赘述GAN的基本知识了J)。由于很长时间没有写中文文章了,请各位对文章中不准确的地方多多包涵、指教。
fishexpert
2018/11/21
2.9K0
构建聊天机器人:检索、seq2seq、RL、SeqGAN
本文将简要介绍聊天机器人的四种构建方法:检索、seq2seq、Reinforcement Learning、seqGAN。 聊天机器人的现状 聊天机器人从应用领域分为: 专业型 通用型 从技术上分为:
用户1147754
2018/01/15
1.3K0
构建聊天机器人:检索、seq2seq、RL、SeqGAN
AI都会写灵魂Rap了?Transformer跨界说唱,节奏、流畅度都不在话下
只需要给定一句输入,AI 就能生成整首歌词。从押韵、流畅度、节奏方面,基本不逊于人类 Rapper。
深度学习技术前沿公众号博主
2021/07/14
6560
AI都会写灵魂Rap了?Transformer跨界说唱,节奏、流畅度都不在话下
对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
1、背景 GAN作为生成模型的一种新型训练方法,通过discriminative model来指导generative model的训练,并在真实数据中取得了很好的效果。尽管如此,当目标是一个待生成的非连续性序列时,该方法就会表现出其局限性。非连续性序列生成,比如说文本生成,为什么单纯的使用GAN没有取得很好的效果呢?主要的屏障有两点: 1)在GAN中,Generator是通过随机抽样作为开始,然后根据模型的参数进行确定性的转化。通过generative model G的输出,discriminative
石晓文
2018/04/11
4.6K3
对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
直播 | 如何让对抗网络GAN生成更高质量的文本?LeakGAN现身说法:“对抗中,你可能需要一个间谍!”(今晚8点直播)
AI科技评论按:自生成式对抗性网络 GANs 出现以来,它和它的变体已经无数次在图像生成任务中证明了自己的有效性,也不断地吸引着越来越多的研究人员加入到提高GANs训练的可控性和稳定性的研究中。 最初,由于其中的一个缺陷,GANs在文本生成方面无法得到有效的应用。得益于该团队之前发表的SeqGAN(https://arxiv.org/abs/1609.05473),GANs在文本生成上有了可能,不过表现并没有图像生成任务中那么突出。主要问题之一就是,生成器 G 从鉴别器 D 获得的反馈中含有的信息量太少,不
AI科技评论
2018/03/14
1.5K0
直播 | 如何让对抗网络GAN生成更高质量的文本?LeakGAN现身说法:“对抗中,你可能需要一个间谍!”(今晚8点直播)
全网唯一,不忽悠的ChatGPT
最近ChatGPT火出圈了,它和前阵子的Stable Diffusion(AIGC)一样成为社交媒体上人们津津乐道的话题。“ChatGPT要取代谷歌搜索了?”“ChatGPT要让程序员失业了吗?”……类似的标题又一次刺激了我们的神经。作为一名码农,我对后一个标题其实是嗤之以鼻的。无论ChatGPT是用了什么样的“魔法”,仅从目前展现的能力来看,它学会的顶多就是熟练使用编程语言的API,去实现某个函数完成人类给定的特定小任务。在真实的项目场景下,程序员通常要接过一个含糊不清的需求,梳理其中的每个细节直至形成逻辑闭环,再将其抽象成一个个特定任务并实现功能,现有AI至多能帮上最后一个小阶段;更别提真正让程序员头大的往往是并发、事务一致性等问题,这些都是现有AI无法解决的。
Datawhale
2023/01/09
1.3K0
全网唯一,不忽悠的ChatGPT
详解 GAN 在自然语言处理中的问题:原理、技术及应用
【新智元导读】本文从 GAN 为什么没有在自然语言处理(NLP)中取得让人惊喜的成果出发,分析了原始 GAN 在 NLP 中的问题。 介绍和分析了近期将 GAN 应用于 NLP 中的一些论文,并进行了总结。 GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响。这篇文章主要介绍 GAN 在 NLP 里的应用(可以算是论文解读或者论文笔记),并未涉及GAN 的基本知识 。由于很长时间没有写中文文章了,请各位对文章中不准确的地方多多包涵、指教。 GAN 为什么没有 NLP 取得好成
新智元
2018/03/27
2K0
详解 GAN 在自然语言处理中的问题:原理、技术及应用
分享总结 | 叶志豪:介绍强化学习及其在 NLP 上的应用
雷锋网 AI 研习社按:当 AlphaGO 横扫之后,越来越多的学者意识到强化学习在人工智能领域所扮演的重要角色。同时随着深度学习的发展,应用深度学习,很多自然语言的传统难题得到突破。另外,引用 David Silver 的一句话:深度学习 (DL)+ 强化学习 (RL) = 人工智能 (AI)。
AI研习社
2018/07/26
1.6K0
分享总结 | 叶志豪:介绍强化学习及其在 NLP 上的应用
AI帮清华博士写说唱歌词晋级了,AI相声行不行?
人们曾一度认为艺术是免受 AI 侵袭的最后一块净土,却没成想它很快就在这里“撒了个野”。
AI科技大本营
2018/08/17
8220
AI帮清华博士写说唱歌词晋级了,AI相声行不行?
能模仿韩寒小四写作的神奇递归神经网络(附代码)
引言 在离人工智能越来越近的今天,研究界和工业界对神经网络和深度学习的兴趣也越来越浓,期待也越来越高。 我们在深度学习与计算机视觉专栏中看过计算机通过卷积神经网络学会了识别图片的内容——模仿人类的看,而工业界大量的应用也证明了神经网络能让计算机学会听(比如百度的语音识别),于是大量的精力开始投向NLP领域,让计算机学会写也一定是非常有意思的事情,试想一下,如果计算机通过读韩寒和小四的小说,就能写出有一样的调调的文字,这是多带劲的一件事啊。 你还别说,还真有这么一类神经网络,能够在NLP上发挥巨大的
大数据文摘
2018/05/24
1.5K0
ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手
音乐产业的快速发展一直与新科学技术的出现紧密相连,AI人工智能科技赋能音乐是个经常出现热议的话题。早在2019年,AI机器人小芝(aixiegeci)就出现在音乐创作创作领域,作为一个AI人工智能写歌词app,在歌词创作领域辅助音乐人写歌词的应用。在软件上输入三句话作为关键词引导句子,选择歌词风格,30秒就能完成一首歌词的创作,根据主题来写一首原创歌词给音乐人作为歌词创作词穷时作为参考借鉴。同时,该应用软件还可以选择歌词的韵脚(十三韵)和每句歌词末尾押韵的字数。
用户9803347
2022/06/11
1.7K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 2 期进行连载,共介绍 10 个在文本生成任务上曾取得 SOTA 的经典模型。 第 1 期:Seq2Seq(RNN)、Seq2Seq(LSTM)、Seq2Seq+
机器之心
2023/03/29
1.2K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
TensorFlow2学习:RNN生成古诗词
https://blog.csdn.net/aaronjny/article/details/103806954
AI科技大本营
2020/03/24
1.7K0
TensorFlow2学习:RNN生成古诗词
ACL2019论文阅读笔记——基于单句和双句打分的生成式摘要
论文Scoring Sentence Singletons and Pairs for Abstractive Summarization发表于2019年自然语言处理顶级会议ACL,本文将对其进行详细解读,这是原文链接(https://arxiv.org/pdf/1906.00077.pdf),此外作者还公布了论文代码。
linhw
2020/03/27
7540
CVPR 2018 中国论文分享会之「视觉与语言」
本文为 2018 年 5 月 11 日在微软亚洲研究院进行的 CVPR 2018 中国论文宣讲研讨会中第四个 Session——「Vision and Language」环节的四场论文报告。
AI科技评论
2018/07/27
5760
CVPR 2018 中国论文分享会之「视觉与语言」
假新闻无处不在:我创建了一个通过深度学习的方法标记假新闻的开源项目
虚假新闻的兴起迫使拥有社交媒体帐户的每个人都成为一名侦探,负责在发布前确定帖子是否真实。但是,虚假新闻仍然会越过我们的防线,在网络上迅速扩散,由于用户的无知和粗心而加剧。正如NBC新闻报道所显示的那样,假新闻不仅会散布恐惧和虚假信息,而且还可能对公司和个人的声誉造成损害。为了减少错误信息的直接和间接损失,我们需要更好的方法来检测虚假新闻。尽管有些虚假新闻是由真实的人撰写的,并且简直像是小说,但利用深度学习模型也可以大量生成虚假新闻,从而加剧了这一问题。到目前为止,计算机生成的文本已经很容易与真人写作的文本区分开。但是,由于自然语言生成模型的巨大改进,计算机生成的文本现在比以往任何时候都更加可信,因此这个问题变得更加紧迫。
deephub
2020/05/09
7600
假新闻无处不在:我创建了一个通过深度学习的方法标记假新闻的开源项目
【干货】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色
【导读】本文全面系统性梳理介绍了强化学习用于发掘GAN在NLP领域的潜力,请大家阅读。 专知公众号转载已获知乎作者SCUT 胡杨授权。 原文地址:https://zhuanlan.zhihu.com/p/2916880 1. 基础:文本生成模型的标准框架 文本生成(Text Generation)通过 机器学习 + 自然语言处理 技术尝试使AI具有人类水平的语言表达能力,从一定程度上能够反应现今自然语言处理的发展水平。 下面用极简的描述介绍一下文本生成技术的大体框架,具体可以参阅各种网络文献(比如:CSDN
WZEARW
2018/04/08
5.2K0
【干货】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色
无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习
一年前,网友在 reddit 上提问道,生成式对抗网络 GAN 是否可以应用到自然语言处理上。GAN 理论的提出者,OpenAI 的科学家,深度学习理论奠基人之一 Yoshua Bengio 的得意门生 Ian Goodfellow 博士回答了这个问题:
悟乙己
2019/05/26
1.4K0
进一步改进GPT和BERT:使用Transformer的语言模型
作者:Chenguang Wang、Mu Li、Alexander J. Smola
机器之心
2019/05/14
1.2K0
进一步改进GPT和BERT:使用Transformer的语言模型
推荐阅读
Python做一个藏头诗生成器
1.4K0
干货|GAN for NLP (论文笔记及解读)
2.9K0
构建聊天机器人:检索、seq2seq、RL、SeqGAN
1.3K0
AI都会写灵魂Rap了?Transformer跨界说唱,节奏、流畅度都不在话下
6560
对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
4.6K3
直播 | 如何让对抗网络GAN生成更高质量的文本?LeakGAN现身说法:“对抗中,你可能需要一个间谍!”(今晚8点直播)
1.5K0
全网唯一,不忽悠的ChatGPT
1.3K0
详解 GAN 在自然语言处理中的问题:原理、技术及应用
2K0
分享总结 | 叶志豪:介绍强化学习及其在 NLP 上的应用
1.6K0
AI帮清华博士写说唱歌词晋级了,AI相声行不行?
8220
能模仿韩寒小四写作的神奇递归神经网络(附代码)
1.5K0
ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手
1.7K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
1.2K0
TensorFlow2学习:RNN生成古诗词
1.7K0
ACL2019论文阅读笔记——基于单句和双句打分的生成式摘要
7540
CVPR 2018 中国论文分享会之「视觉与语言」
5760
假新闻无处不在:我创建了一个通过深度学习的方法标记假新闻的开源项目
7600
【干货】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色
5.2K0
无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习
1.4K0
进一步改进GPT和BERT:使用Transformer的语言模型
1.2K0
相关推荐
Python做一个藏头诗生成器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验