热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【NLP】《ChinesePoetryGenerationwithPlanningbasedNeuralNetwork》的阅读笔记

背景前段时间回顾和学习了基于RNN+Attention与基于CNN+Attention的seq2seq模型:【NLP】seq2seq由浅入深——基于Rnn和Cnn的处理方式,于是现




背景

前段时间回顾和学习了基于RNN+Attention与基于CNN+Attention的seq2seq模型:【NLP】seq2seq 由浅入深——基于Rnn和Cnn的处理方式,于是现在想找一些案例练练手。
seq2seq最常见的实践就是翻译,看看网上大多是什么英语到法语,到德语的一些案例。说实话,能不能整点能看懂的呢?或许大家都没有公开的语料吧,坦白讲我也没有,哈哈。那就去github上找找。

除了机器翻译,seq2seq还是有一些比较有意思的落地场景。比如说,我们打电话到海底捞预定,一般情况下接电话的女声,其实是一个机器人来帮你预定,听起来还是比较智能的。这里就用到了seq2seq,但是涉及到语音处理。另一个是华为团队,通过seq2seq为基础设计的模型实现了计算机对微博的自动回复,并通过模型间的对比得到了一系列有意思的结果。如下图,post为微博主发的文,其余四列为不同模型对该条微博做出的回复。
请添加图片描述
四行诗的原则包括:诗由四行组成,每行有五个或七个字;每个字都有一个特定的音调,平(水平音)或仄(向下音);四行诗中第二行和最后一行的最后一个字符必须属于同一押韵类别。有如此严格的限制,写好的四行诗就充满了有节奏之美。

近年来,诗歌自动生成的研究受到了广泛的关注。大多数方法都使用规则或模板,遗传算法,总结的方法以及统计机器翻译的方法生成诗歌。最近,深度学习方法已经成为一门很有前途的学科,它认为诗歌生成是一个序列到序列的生成问题。这些方法通常是根据用户的写作意图(通常是一组关键字)从诗歌数据集中选择一行来生成第一行,其他三行是根据第一行和已生成的生成。用户的写作意图只能影响第一行,其余三行可能与诗的主题没有关联,这可能会导致生成诗时的语义不一致。此外,诗歌的主题通常用训练语料库中的诗歌来表示。但正如我们所知,在诗歌中使用的单词,特别是在古代写的诗歌,是不同于现代语言的。因此,如果用户想为一个现代术语(如巴拉克·奥巴马)写诗,现有的方法可能无法产生有意义的诗歌。

这篇论文提出了一种新颖的诗歌生成方法,它以两个阶段的过程生成诗歌:诗歌的内容(“该说什么”)首先被明确地计划好,然后进行表面实现(“如何说”)。给定用户的写作意图,它可以是一组关键字,一个句子,即使是用自然语言描述的文档,第一步也是使用诗歌规划模型来确定诗歌的子主题序列,每一行都由一个子主题表示。诗歌规划模型将用户的写作意图分解为一系列的子主题,每个子主题都与主主题相关,代表了写作意图的一个方面。然后逐行生成诗,使用基于递归神经网络的编码器-解码器模型(RNNenc-dec),逐行生成诗,并根据相应的子主题和前面生成的行生成每一行。文中修改了RNN的enc-dec框架,以支持对子主题和前面两行的编码。基于规划的机制相比于以往的方法有两个优点。首先,生成的诗的每一行都与用户的写作意图有更紧密的联系。其次,诗歌规划模型可以从诗歌数据之外,从额外的知识来源学习,如大规模网络数据或从百科全书中提取的知识。因此,它可以连接现代概念和古代诗歌所涵盖的文字集合。以“巴拉克·奥巴马”为例:利用百科全书的知识,诗歌规划模型可以将用户的查询巴拉克·奥巴马扩展到一系列子主题,如优秀、权力等,从而确保生成诗歌的语义一致性。

该文的贡献有两方面。首先,提出了一个基于规划的诗歌生成框架,它明确地规划了每一行的子主题。其次,使用一个修改的RNN编码解码器框架,它支持编码子主题和前面的行,一行一行地生成诗。


相关工作

诗歌生成是NLP中的一项具有挑战性的任务。Oliveira等人提出了一种基于语义和语法模板的诗歌生成方法。Netzer等人采用了一种基于单词关联度量的方法。Tosa等人使用了一种短语搜索的方法来进行日本诗歌的生成。Greene等人应用统计学的方法来分析、生成和翻译有节奏的诗歌。Colton等人描述了一个基于语料库的诗歌生成系统,该系统使用模板根据给定的约束来构建诗歌。Yan等人认为诗歌生成是一个基于有几个约束的总结框架的优化问题。Manurung使用遗传算法来生成诗歌。基于统计机器翻译(SMT)是一种重要方法。Jiang 和 Zhou使用基于SMT的模型生成中文对句,可以看作是只有两行的简化调节诗句。第一行被认为是源语言,并被翻译成第二行。He等人扩展了这个方法,通过将前一行依次转换为下一行来生成四行诗。

近年来,深度学习方法在诗歌生成方面取得了巨大的成功。Zhang和Lapata提出了一种基于递归神经网络(RNN)的四行诗生成模型。该方法使用递归神经网络语言模型(RNNLM)从给定的关键字中生成第一行,然后,通过累积迄今为止已生成的行的状态,依次生成后续的行。Wang等人使用端到端神经机器翻译模型来生成宋词。宋词是通过将已成的行翻译为接下来的行。这个过程类似于SMT,但句子之间的语义相关性更好。Wang等人没有考虑到第一行的生成,因此,第一行是由用户提供的,必须是诗中写得很好的句子。Yi扩展这种方法生成中国四行诗。生成第一行的问题可以通过一个单独的神经机器翻译(NMT)模型来解决,该模型以一个关键字作为输入,并将其转换为第一行。Marjan 等人提出了一种诗歌生成算法,首先生成与给定关键字相关的押韵字,然后使用编码器-解码器模型根据押韵字生成整首诗。

文中的工作不同于以前的方法如下。首先,不限制用户的输入。它可以是一些关键词、短语、句子,甚至是文档。以前的方法只能支持一些关键字或必须提供第一行。其次,使用基于规划的方法,根据用户的输入来确定诗的主题,每一行都有一个特定的子主题,保证生成的诗连贯且组织良好,从而避免了前一种方法的问题,即保证只有第一行与用户的意图相关,而下一行由于相贯衰减问题可能与意图无关。第三,在节奏或音调中是由规则或额外的结构控制的,而文中模型可以自动从训练语料库中学习约束。最后,该诗歌生成模型的结构更简单。


方法


1.总览

受观察到诗人在写诗前应该先制定大纲的启发,文中提出了一种基于计划的诗歌生成方法(PPG),首先根据用户的写作意图生成大纲,然后生成诗。这个PPG系统以用户的写作意图作为输入,可以是一个单词、一个句子或一个文档,然后分两个阶段生成一首诗:诗歌规划和诗歌生成。PPG的两阶段程序的说明如下图:
在这里插入图片描述
假设正在写一首由




N



N


N行组成,





l


i




l_i


li​表示诗的第




i



i


i行。在诗歌规划阶段,输入查询被转换为




N



N


N个关键字(





k


1



,



k


2



,





,



k


N




k_1,k_2,\cdots,k_N


k1​,k2​,⋯,kN​),





k


i




k_i


ki​代表第




i



i


i行诗的子主题。在诗歌生成阶段,





l


i




l_i


li​的生成是通过





k


i




k_i


ki​和





l


1




l_1


l1​到





l



i





1





l_{i-1}


li−1​行诗作为输入的,





l


1




l_1


l1​到





l



i





1





l_{i-1}


li−1​行诗连接起来构成一个序列。然后诗可以依次生成,每一行都根据一个子主题和前面的所有主题生成。


2. 规划作诗


2.1 关键词提取

用户的输入写入意图可以用一系列单词来表示。在诗歌规划阶段有一个假设,从输入查询




Q



Q


Q中提取的关键字数量必须等于诗中的




N



N


N行数,这可以确保每一行只取一个关键字作为子主题。如果用户的输入查询




Q



Q


Q太长,我们需要提取最重要的




N



N


N个单词,并保持原始顺序作为关键字序列,以满足需求。

文中使用的是TextRank算法去评估重要的词语。这是一种基于PageRank的基于图的排名算法。每个候选词由图中的一个顶点表示,并根据两个词的共现性在它们之间添加边;边的权重是根据两个词的共现强度的总数来设置的。
TextRank分数




S


(



V


i



)



S(V_i)


S(Vi​)被初始化为默认值(例如1.0),并根据以下公式进行迭代计算,直到收敛:






S



(



V


i



)



=


(


1





d


)


+


d








V


j






E



(



V


i



)







w



j


i











V


k






E



(



V


j



)






w



j


k






S



(



V


j



)




S\left(V_{i}\right)=(1-d)+d \sum_{V_{j} \in E\left(V_{i}\right)} \frac{w_{j i}}{\sum_{V_{k} \in E\left(V_{j}\right)} w_{j k}} S\left(V_{j}\right)


S(Vi​)=(1−d)+dVj​∈E(Vi​)∑​∑Vk​∈E(Vj​)​wjk​wji​​S(Vj​)

其中,





w



i


j





w_{ij}


wij​是节点





V


j




V_j


Vj​和





V


i




V_i


Vi​之间的边的权重,




E


(



V


i



)



E(V_i)


E(Vi​)是与





V


i




V_i


Vi​连接的顶点集,




d



d


d是一个阻尼因子,通常设置为0.85,




S


(



V


i



)



S(V_i)


S(Vi​)的初始分数设置为1.0。


2.2 关键词扩充

如果用户的输入查询




Q



Q


Q太短,无法提取出足够的关键字,我们需要扩展一些新的关键字,直到满足关键字号的要求。我们使用两种不同的方法来扩展关键字。

RNNLM-based method: 我们使用一个递归神经网络语言模型(RNNLM)根据前面的关键词顺序预测后续关键词:





k


i



=


arg







max






k



P


(


k






k



1


:



i





1





)



k_i= \arg \max_k P(k|k_{1:{i-1}})


ki​=argmaxk​P(k∣k1:i−1​),





k


i




k_i


ki​表示第




k



k


k个关键词,





k



1


:


i





1





k_{1:i-1}


k1:i−1​是已经有的关键词序列。

RNNLM的训练需要一个由从诗歌中提取的关键字序列组成的训练集,其中一个关键字代表一行的子主题。我们从收集到的诗歌中自动生成训练语料库。具体来说,给定一首由




N



N


N行组成的诗,我们首先根据在诗语料库上计算出的TextRank分数对每行中的单词进行排序。然后选择文本排名得分最高的词语作为该行的关键词。这样,可以为每首诗提取一个关键字序列,并为基于RNNLM的关键字预测模型生成一个训练语料库。

Knowledge-based method: 上述基于RNNLM的方法仅适用于为所收集的诗歌所涵盖的内容生成子主题。当用户的查询包含域外关键字时,例如,训练语料库不覆盖的命名实体时,此方法就整不了了。

为了解决这个问题,我们提出了一种基于知识的方法,它使用额外的知识来源来生成子主题。额外的知识来源可以使用,包括百科全书、搜索引擎的建议、词汇数据库(如:WordNet)等。给定一个关键词





k


i




k_i


ki​,该方法的关键思想是找到一些能够最好地描述或解释





k


i




k_i


ki​的单词。在文中,使用百科全书的条目作为知识的来源,从





k


i




k_i


ki​中扩展新的关键词。我们检索那些满足以下所有条件的条件作为候选关键字:


  1. 这个词在





    k


    i




    k_i


    ki​周围




    [





    5


    ,


    5


    ]



    [-5,5]


    [−5,5]的窗口里
  2. 这个单词的词性是形容词或名词;
  3. 这个词被诗歌语料库的词汇所覆盖

然后选择文本排名得分最高的候选词作为关键词。


3.诗的生成

在诗歌生成阶段,诗是逐行生成的。每一行都是通过以诗歌规划模型指定的关键字和前面的所有文本作为输入来生成的。这个过程可以看成是一个序列到序列的映射问题,其输入由两种不同类型的序列组成:由诗歌规划模型指定的关键字和之前生成的诗歌文本。文中修改了一个基于注意力的RNN编码器-解码器(RNNRNN-dec)的框架以支持多个序列作为输入。

给定一个有





T


k




T_k


Tk​字符的关键字




k



k


k,例如:




k


=


{



a


1



,



a


2



,





,



a



T


k




}



k=\{ a_1, a_2, \cdots, a_{T_k}\}


k={a1​,a2​,⋯,aTk​​},和前面的文本




x



\mathbf{x}


x,里面有





T


x




T_x


Tx​个字符,例如:




x


=


{



x


1



,



x


2



,





,



x



T


x




}



\mathbf{x}=\{x_1, x_2, \cdots,x_{T_x}\}


x={x1​,x2​,⋯,xTx​​}。首先将




x



\mathbf{x}


x编码成一个隐藏状态的序列




[



r


1



:



r



T


k




]



[r_1:r_{T_k}]


[r1​:rTk​​],




x



\mathbf{x}


x编码成




[



h


1



:



h



T


x




]



[h_1:h_{T_x}]


[h1​:hTx​​], 两者都使用的是Bi-GRU模型。然后,通过连接




[



r


1







r



T


k




]



[r_1:r_{T_k}]


[r1​:rTk​​]的最后一个前向传播状态和第一个前向传播状态,将




[



r


1







r



T


k




]



[r_1:r_{T_k}]


[r1​:rTk​​]集成到一个向量





r


c




r_c


rc​中,如下:






r


c



=



[








r



T


k
















r


1











]




r_{c}=\left[\begin{array}{c} \overrightarrow{r_{T_{k}}} \\ \overleftarrow{r_{1}} \end{array}\right]


rc​=[rTk​​


​r1​


​​]

然后将





h


0



=



r


c




h_0=r_c


h0​=rc​,然后这个序列的向量




h


=


[



h


0







h



T


x




]



\mathbf{h}=[h_0:h_{T_x}]


h=[h0​:hTx​​]就可以表示




k



\mathbf{k}


k和




x



\mathbf{x}


x的语义,如下图:
在这里插入图片描述
注意,当我们生成第一行时,前面的文本的长度为零,即





T


x



=


0



T_x=0


Tx​=0,那么向量序列




h



\mathbf{h}


h只包含一个向量,即




h


=


[



h


0



]



h=[h_0]


h=[h0​],因此,第一行实际上是由第一个关键字生成的。

对于解码器,我们使用另一个GRU,它维护一个内部状态向量





s


t




s_t


st​,对于每个生成步骤




t



t


t,最可能的输出





y


t




y_t


yt​是基于





s


t




s_t


st​、上下文向量





c


t




c_t


ct​和之前生成的输出





y



t





1





y_{t−1}


yt−1​生成的。可以使用如下公式表示:







y


t



=


arg







max






y



P



(


y






s


t



,



c


t



,



y



t





1




)




y_{t}=\arg \max _{y} P\left(y \mid s_{t}, c_{t}, y_{t-1}\right)


yt​=argymax​P(y∣st​,ct​,yt−1​)

经过每一个预测,





s


t




s_t


st​会被如下公式更新:






s


t



=


f



(



s



t





1




,



c



t





1




,



y



t





1




)




s_{t}=f\left(s_{t-1}, c_{t-1}, y_{t-1}\right)


st​=f(st−1​,ct−1​,yt−1​)






f


(





)



f(\cdot)


f(⋅)是GRU的一个激活函数,通过对已声明的模型在每一步重新计算





c


t




c_t


ct​(这里就是attention的计算):







c


t



=







j


=


0





T


h






1





a



t


j





h


j




c_{t}=\sum_{j=0}^{T_{h}-1} a_{t j} h_{j}


ct​=j=0∑Th​−1​atj​hj​







h


j




h_j


hj​是编码器输出中的第




j



j


j个隐藏状态。权重





a



t


j





a_{tj}


atj​是由如下公式计算出:






a



t


j




=




exp






(



e



t


j




)










k


=


0





T


h






1




exp






(



e



t


k




)






a_{t j}=\frac{\exp \left(e_{t j}\right)}{\sum_{k=0}^{T_{h}-1} \exp \left(e_{t k}\right)}


atj​=∑k=0Th​−1​exp(etk​)exp(etj​)​

其中:







e



t


j




=



v


a


T



tanh






(



W


a




s



t





1




+



U


a




h


j



)




e_{t j}=v_{a}^{T} \tanh \left(W_{a} s_{t-1}+U_{a} h_{j}\right)


etj​=vaT​tanh(Wa​st−1​+Ua​hj​)







e



t


j





e_{tj}


etj​是在时间步长




t



t


t时在





h


j




h_j


hj​上的注意力得分。下一个单词





y


t




y_t


yt​的概率可以定义为:





P



(



y


t







y


1



,





,



y



t





1




,


x


,


k


)



=


g



(



s


t



,



y



t





1




,



c


t



)




P\left(y_{t} \mid y_{1}, \ldots, y_{t-1}, \mathbf{x}, \mathbf{k}\right)=g\left(s_{t}, y_{t-1}, c_{t}\right)


P(yt​∣y1​,…,yt−1​,x,k)=g(st​,yt−1​,ct​)

其中




g


(





)



g(\cdot)


g(⋅) 是一个输出





y


t




y_t


yt​的概率的非线性函数。

诗歌生成模型的参数被训练,以最大限度地提高训练语料库的对数似然:





arg





max










n


=


1



N



log





P



(



y


n







x


n



,



k


n



)




\arg \max \sum_{n=1}^{N} \log P\left(\mathbf{y}_{\mathbf{n}} \mid \mathbf{x}_{\mathbf{n}}, \mathbf{k}_{\mathbf{n}}\right)


argmaxn=1∑N​logP(yn​∣xn​,kn​)


实验


1.数据集

本文着重研究了四行、五或七个字符长度相同的中国四行诗。我们从互联网上收集了76,859个四行诗,随机选择2000首诗进行验证,2000首诗进行测试,其余的诗进行训练。

训练集中所有的诗歌首先使用基于CRF的单词分割系统被分割成词语。然后计算每个单词的文本排名分数。文本排名得分最高的词语被选择作为该行的关键字。这样,就可以为每个四行诗提取一个包含4个关键词的序列。从诗歌的训练语料库中,提取了72,859个关键字序列,用于训练RNN语言模型进行关键字扩展。对于基于知识的扩展,我们使用百度百科和维基百科作为额外的知识来源。

从四行诗中提取四个关键字后,我们为每首诗生成四个由其组成的三元组(关键字、前面的文本、当前行)如下图:
在这里插入图片描述


2.训练

对于提出的基于注意力的RNN环境模型,我们选择了6000个最常用的字符作为源边和目标边的词汇表。单词嵌入维数为512,并由单词2vec初始化。解码器和两个编码器的循环隐藏层包含512个隐藏单元。模型的参数在均匀分布上随机初始化,范围在[-0.08,0.08]。该模型采用AdaDelta算法进行训练,其中minibatch被设置为128。根据验证集上的损失结果,选择最终的模型。


3.评估


3.1 评估指标

众所周知,准确评价文本生成系统是困难的,如诗歌生成和对话响应生成。给定一个特定的主题,有成千上万的方法可以生成一个适当的和相关的诗歌或对话框响应,有限的参考文献不可能涵盖所有正确的结果。Liu 最近表明,基于重叠的自动评估度量适应于对话响应,BLEU和METEOR与人类评价相关性不大。因此,我们进行了一个人类研究来评估诗歌生成模型。我们对人类评价者使用四种评价标准来评价诗歌:“诗意”、“流畅性”、“相关性”、“意义”。详细的说明可以如下表:
在这里插入图片描述
各方面的得分从1到5分,得分越高越好。每个系统产生20个5字的四行诗和20个7字的四行诗。所有生成的诗歌都由5位专家进行评估,并平均评分分数作为最终分数。


3.2 基线

文中实现了几种诗歌生成方法作为基线,并对所有方法采用了相同的预处理方法。
SMT.: 一种基于统计机器翻译的中国诗歌生成方法。一首诗是通过“翻译”到下一行迭代生成的。
RNNLM:一种生成文本序列的方法。一首诗的几行被作为一个角色序列连接在一起,用于训练RNNLM。
RNNPG:在基于RNN的诗歌生成器的方法中,第一行由标准RNNLM生成,然后根据前一行编码的上下文向量迭代生成所有其他行。
ANMT:基于注意力的神经机器翻译方法。它将该问题视为一个机器翻译任务,这类似于传统的SMT方法。主要区别是在ANMT中,机器翻译系统是一个标准的基于注意力的RNN enc-dec框架.


3.3 结果

给出了专家评价的结果如下:
在这里插入图片描述我们可以看到,我们提出的方法,基于规划的诗歌生成(PPG),在平均分上优于所有的基线模型。结果与5个字和7个字诗的设置一致。

SMT生成的诗歌的诗性优于RNNLM,说明基于翻译的方法可以更好地捕捉两条相邻行之间的映射关系。ANMT是一个较强的基线,其表现优于SMT、RNNLM和RNNPG,但低于我们的方法。ANMT和PPG都使用基于注意力的endec框架。主要的区别是,我们的方法在生成诗之前为每一行定义了子主题。ANMT方法只是将前面的文本转换为下一行。如果没有子主题的指导,该系统往往会产生更一般但不那么有意义的结果。相比之下,我们的方法明确地考虑了关键词,对每一行的子主题都有更好的控制。从人工评价结果可以看出,与ANMT相比,该方法在诗意和流畅度方面取得了非常接近的性能,但相关性和含义得分要高得多,验证了子主题预测模型的有效性。


4.自动生成vs人类作的诗

我们进行了一个有趣的评估,直接将我们的自动诗歌生成系统与人类诗人进行了比较,这类似于图灵测试。我们从测试集中随机抽取了20首由中国古代诗人写的诗。我们以这些诗的标题作为输入,并通过我们的自动生成系统生成了20首诗。因此,机器生成的诗歌与人类创作的诗歌属于同一主题。然后我们要求一些人类评估者来区分人类所写的诗歌和机器生成的诗歌。我们总共有40名评估者。他们都受过良好教育,拥有学士或更高学历。其中4人为中国文学专业人士,并被分配到专家组。其他36名评估者被分配到正常组。在盲测中,我们每次向评估者展示一对诗及其标题,评估者被要求从三个选项中选择:(1)诗A是人类写的;(2)诗B是人类写的;(3)不能区分哪首是人类写的。

评价结果显示如下图:
在这里插入图片描述
我们可以看到,49.9%的机器生成的诗歌被错误地识别为人类所写的诗歌,或者不能被正常的评估者所区分。我们可以看到,49.9%的机器生成的诗歌被错误地识别为人类所写的诗歌,或者不能被正常的评估者所区分。我们可以从结果中得出两个结论:(1)在正常用户的标准下,我们的机器生成诗歌的质量非常接近人类诗人;(2)但从专业专家的角度来看,机器生成的诗歌与人类写的诗歌相比仍然有一些明显的不足。下图举了一个从盲测中选择的两首诗的例子。
在这里插入图片描述


5.生成示例

除了上表中的古代诗歌外,我们的方法还可以生成基于任何现代术语的诗歌。下表展示了一些示例左诗的标题是啤酒,我们的诗歌规划模型给出的关键词是啤酒,香醇,清爽和醉。右边的标题是一个著名的作家冰心的实体命名的,诗歌规划系统除了冰心之外,还产生了三个关键词:春水、繁星和往事,这些都与作者的作品有关。
在这里插入图片描述


结论与未来工作

在本文中,我们提出了一种新的两阶段诗歌生成方法,它首先明确地将用户的写作意图分解为一系列子主题,然后使用改进的基于注意力的RNN编码器-解码器框架迭代生成一首诗歌。修改后的RNN enc-dec模型有两个编码器,可以同时编码子主题和前面的文本。人类专家的评估表明,我们的方法优于所有的基线模型,诗歌质量在某种程度上可以与人类诗人相媲美。我们还证明了使用百科全书作为额外的知识来源,我们的方法可以将用户的输入扩展到适当的子主题中,以便生成诗歌。在未来,我们将研究更多的主题规划方法,如PLSA、LDA或word2vec。我们也将把我们的方法应用于其他形式的文学类型,如诗歌、元曲等,或其他语言的诗歌。


我的总结

总体来说,整个流程并不是很复杂,思路比较清晰,评价方式也比较特别,但是也能够接收。除此之外,不知道作者有没有尝试将诗词中的平仄特征加进去,加进去后读起来是不是更加流畅呢?后面有机会可以尝试复现一下。当然,这个需要自己去爬取语料,要去复现的话,要做的还不少嘞。其中涉及的一些算法如TextRank也是一个比较有意思的算法,嘎嘎,有时间也可以整一篇文章。fighting!!!



推荐阅读
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 1.组合最优化问题定义:是通过数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等。描述:最优化问题的数学模型的一般描述是,x为决策 ... [详细]
author-avatar
董鹏飞80
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有