苹果巴巴爸爸建新家擦擦擦

巴巴爸爸填色涂色_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
巴巴爸爸填色涂色
&&巴巴爸爸
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋网7月10日消锋网7月10日消息,《植物大战僵尸2》 如今...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
您需要通过验证再能继续浏览 3秒后开始验证
威锋旗下产品
Hi~我是威威!
 粤公网安备 11号
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
巴巴爸爸擦擦擦爸
Ta还未创建任何播单~
正在加载中,请稍候...
没有更多内容了~
Copyright (C) 2017
All Rights Reserved&p&&b&以下内容来自&a href=&/?target=http%3A///pinard/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&刘建平&i class=&icon-external&&&/i&&/a&Pinard-博客园的学习笔记,总结如下:&/b&&/p&&h2&&b&1 条件随机场CRF:从条件随机场到线性链条件随机场&/b&&/h2&&p&条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。&/p&&p&&b&1.1&/b& &b&什么样的问题需要CRF模型&/b&&/p&&p&这里举一个简单的例子:假设有Bob一天从早到晚的一系列照片,Bob想考考我们,要我们猜这一系列的每张照片对应的活动,比如: 工作的照片,吃饭的照片,唱歌的照片等等。一个比较直观的办法就是,我们找到Bob之前的日常生活的一系列照片,然后找Bob问清楚这些照片代表的活动标记,这样我们就可以用监督学习的方法来训练一个分类模型,比如逻辑回归,接着用模型去预测这一天的每张照片最可能的活动标记。&/p&&p&这种办法虽然是可行的,但是却忽略了一个重要的问题,就是这些照片之间的顺序其实是有很大的时间顺序关系的,而用上面的方法则会忽略这种关系。比如我们现在看到了一张Bob闭着嘴的照片,那么这张照片我们怎么标记Bob的活动呢?比较难去打标记。但是如果我们有Bob在这一张照片前一点点时间的照片的话,那么这张照片就好标记了。如果在时间序列上前一张的照片里Bob在吃饭,那么这张闭嘴的照片很有可能是在吃饭咀嚼。而如果在时间序列上前一张的照片里Bob在唱歌,那么这张闭嘴的照片很有可能是在唱歌。&/p&&p&为了让我们的分类器表现的更好,可以在标记数据的时候,可以&b&考虑相邻数据的标记信息&/b&。这一点,是普通的分类器难以做到的。而这一块,也是CRF比较擅长的地方。&/p&&p&在实际应用中,自然语言处理中的&b&词性标注&/b&(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的,当然CRF不是唯一的选择,也有很多其他的词性标注方法。&/p&&p&&b&1.2&/b& &b&从随机场到马尔科夫随机场&/b&&/p&&p&首先,我们来看看什么是随机场。“随机场”的名字取的很玄乎,其实理解起来不难。&b&随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。&/b&还是举词性标注的例子:假如有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在已知的词性集合(名词,动词...)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。&/p&&p&了解了随机场,我们再来看看马尔科夫随机场。&b&马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。&/b&继续举十个词的句子词性标注的例子: 如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。 &/p&&p&&b&1.3&/b& &b&从马尔科夫随机场到条件随机场&/b&&/p&&p&CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,X是词,Y是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。&/p&&p&对于CRF,给出准确的数学语言描述:设X与Y是随机变量,P(Y|X)是给定X时Y的条件概率分布,若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场。&/p&&p&1.4 &b&从条件随机场到线性链条件随机场&/b&&/p&&p&注意在CRF的定义中,我们并没有要求X和Y有相同的结构。而实现中,我们一般都假设&/p&&p&X和Y有相同的结构,即:&/p&&img src=&/v2-3dd9c066f8aecebd613fd16_b.jpg& data-caption=&& data-rawwidth=&441& data-rawheight=&49& class=&origin_image zh-lightbox-thumb& width=&441& data-original=&/v2-3dd9c066f8aecebd613fd16_r.jpg&&&p&一般考虑如下图所示的结构:X和Y有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。&/p&&img src=&/v2-5cbeaf604ba871e4dd024_b.jpg& data-caption=&& data-rawwidth=&600& data-rawheight=&267& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-5cbeaf604ba871e4dd024_r.jpg&&&p&在十个词的句子的词性标记中,词有十个,词性也是十个,因此,如果假设它是一个马尔科夫随机场,那么它也就是一个linear-CRF。&/p&&p&我们再来看看 linear-CRF的数学定义:&/p&&p&设 &img src=&/equation?tex=X%3D%28X_%7B1%7D%2CX_%7B2%7D%EF%BC%8C...%2CX_%7Bn%7D%29%2CY%3D%28Y_%7B1%7D%2CY_%7B2%7D%2C...%2CY_%7Bn%7D%29& alt=&X=(X_{1},X_{2},...,X_{n}),Y=(Y_{1},Y_{2},...,Y_{n})& eeimg=&1&& 均为线性链表示的随机变量序列,在给定随机变量序列 &img src=&/equation?tex=X& alt=&X& eeimg=&1&& 的情况下,随机变量 &img src=&/equation?tex=Y& alt=&Y& eeimg=&1&& 的条件概率分布 &img src=&/equation?tex=P%28Y%7CX%29& alt=&P(Y|X)& eeimg=&1&& 构成条件随机场,即满足马尔科性:&/p&&img src=&/v2-f39c52a0b057b58ee6b5d40c05aa378b_b.jpg& data-caption=&& data-rawwidth=&447& data-rawheight=&46& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&/v2-f39c52a0b057b58ee6b5d40c05aa378b_r.jpg&&&p&则称 &img src=&/equation?tex=P%28Y%7CX%29& alt=&P(Y|X)& eeimg=&1&& 为线性链条件随机场。&/p&&p&&b&1.5 线性链条件随机场的参数化形式&/b&&/p&&p&对于上一节讲到的linear-CRF,我们如何将其转化为可以学习的机器学习模型呢?&/p&&p&这是通过特征函数和其权重系数来定义的。什么是特征函数呢?&/p&&p&在linear-CRF中,特征函数分为两类,第一类是定义在Y节点上的节点特征函数,这类特征函数只和当前节点有关,记为:&/p&&img src=&/v2-f9fdb71a5bd5cb0acdebc_b.jpg& data-caption=&& data-rawwidth=&409& data-rawheight=&43& class=&content_image& width=&409&&&p&其中, &img src=&/equation?tex=L& alt=&L& eeimg=&1&& 是定义在该节点的节点特征函数的总个数, &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 是当前节点在序列的位置。&/p&&p&第二类是定义在Y上下文的局部特征函数,这类特征函数只和当前节点和上一个节点有关,记为:&/p&&img src=&/v2-84eae4d0d8e6cb0b8754_b.jpg& data-caption=&& data-rawwidth=&410& data-rawheight=&48& class=&content_image& width=&410&&&p&其中 &img src=&/equation?tex=K& alt=&K& eeimg=&1&& 是定义在该节点的局部特征函数的总个数, &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 是当前节点在序列的位置。之所以只有上下文相关的局部特征函数,没有不相邻节点之间的特征函数,是因为linear-CRF满足马尔科夫性。&/p&&p&无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设 &img src=&/equation?tex=t_%7Bk%7D& alt=&t_{k}& eeimg=&1&& 的权重系数是 &img src=&/equation?tex=%5Clambda_%7Bk%7D& alt=&\lambda_{k}& eeimg=&1&& , &img src=&/equation?tex=s_%7Bl%7D& alt=&s_{l}& eeimg=&1&& 的权重系数是 &img src=&/equation?tex=u_%7Bl%7D& alt=&u_{l}& eeimg=&1&& ,则linear-CRF由所有的 &img src=&/equation?tex=t_%7Bk%7D%2C%5Clambda_%7Bk%7D%2Cs_%7Bl%7D%2Cu_%7Bl%7D& alt=&t_{k},\lambda_{k},s_{l},u_{l}& eeimg=&1&& 共同决定。&/p&&p&此时我们得到了linear-CRF的参数化形式如下:&/p&&img src=&/v2-49be017d37ce4a26d049_b.jpg& data-caption=&& data-rawwidth=&573& data-rawheight=&60& class=&origin_image zh-lightbox-thumb& width=&573& data-original=&/v2-49be017d37ce4a26d049_r.jpg&&&p&其中, &img src=&/equation?tex=Z%28x%29& alt=&Z(x)& eeimg=&1&& 为规范化因子:&/p&&img src=&/v2-58dd5a43dfaf01fad06968_b.jpg& data-caption=&& data-rawwidth=&570& data-rawheight=&63& class=&origin_image zh-lightbox-thumb& width=&570& data-original=&/v2-58dd5a43dfaf01fad06968_r.jpg&&&p&回到特征函数本身,每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了linear-CRF的最终的条件概率分布。&/p&&p&&b&1.6&/b& &b&线性链条件随机场实例&/b&&/p&&p&这里我们给出一个linear-CRF用于词性标注的实例,为了方便,我们简化了词性的种类。假设输入的都是三个词的句子,即 &img src=&/equation?tex=X%3D%28X_%7B1%7D%EF%BC%8C%2CX_%7B2%7D%EF%BC%8C%2CX_%7B3%7D%29& alt=&X=(X_{1},,X_{2},,X_{3})& eeimg=&1&& ,输出的词性标记为 &img src=&/equation?tex=Y%3D%28Y_%7B1%7D%EF%BC%8C%2CY_%7B2%7D%EF%BC%8CY_%7B3%7D%29& alt=&Y=(Y_{1},,Y_{2},Y_{3})& eeimg=&1&& ,其中 &img src=&/equation?tex=Y%5Cin%5Cleft%5C%7B+1%28%E5%90%8D%E8%AF%8D%29%2C2%28%E5%8A%A8%E8%AF%8D%29+%5Cright%5C%7D& alt=&Y\in\left\{ 1(名词),2(动词) \right\}& eeimg=&1&&&/p&&p&这里只标记出取值为1的特征函数如下:&/p&&img src=&/v2-1cfbd3e1b981cb_b.jpg& data-caption=&& data-rawwidth=&563& data-rawheight=&347& class=&origin_image zh-lightbox-thumb& width=&563& data-original=&/v2-1cfbd3e1b981cb_r.jpg&&&p&求标记(1,2,2)的非规范化概率。&/p&&p&利用linear-CRF的参数化公式,我们有:&/p&&img src=&/v2-ac385e79d_b.jpg& data-caption=&& data-rawwidth=&581& data-rawheight=&58& class=&origin_image zh-lightbox-thumb& width=&581& data-original=&/v2-ac385e79d_r.jpg&&&p&带入(1,2,2)有:&/p&&img src=&/v2-4dabf5e5def017a550d62db_b.jpg& data-caption=&& data-rawwidth=&416& data-rawheight=&47& class=&content_image& width=&416&&&p&&b&1.7&/b& &b&线性链条件随机场的简化形式&/b&&/p&&p&在上几节里面,我们用 &img src=&/equation?tex=s_%7Bl%7D& alt=&s_{l}& eeimg=&1&& 表示节点特征函数,用 &img src=&/equation?tex=t_%7Bk%7D& alt=&t_{k}& eeimg=&1&& 表示局部特征函数,同时也用了不同的符号表示权重系数,导致表示起来比较麻烦。其实我们可以对特征函数稍加整理,将其统一起来。&/p&&p&假设在某一节点我们有 &img src=&/equation?tex=K_%7B1%7D& alt=&K_{1}& eeimg=&1&& 个局部特征函数和 &img src=&/equation?tex=K_%7B2%7D& alt=&K_{2}& eeimg=&1&& 个节点特征函数,总共有 &img src=&/equation?tex=K%3DK_%7B1%7D%2BK_%7B2%7D& alt=&K=K_{1}+K_{2}& eeimg=&1&& 个特征函数。用一个特征函数 &img src=&/equation?tex=f_%7Bk%7D%28y_%7Bi-1%7D%2Cy_%7Bi%7D%2Cx%2Ci%29& alt=&f_{k}(y_{i-1},y_{i},x,i)& eeimg=&1&& 来统一表示如下:&/p&&img src=&/v2-bbd2dd1f9c5f802d10b32_b.jpg& data-caption=&& data-rawwidth=&592& data-rawheight=&65& class=&origin_image zh-lightbox-thumb& width=&592& data-original=&/v2-bbd2dd1f9c5f802d10b32_r.jpg&&&p&对 &img src=&/equation?tex=f_%7Bk%7D%28y_%7Bi-1%7D%2Cy_%7Bi%7D%2Cx%2Ci%29& alt=&f_{k}(y_{i-1},y_{i},x,i)& eeimg=&1&& 在各个序列位置求和得到:&/p&&img src=&/v2-64fe8a7d963f09dcc60b0eecde48cc0e_b.jpg& data-caption=&& data-rawwidth=&446& data-rawheight=&62& class=&origin_image zh-lightbox-thumb& width=&446& data-original=&/v2-64fe8a7d963f09dcc60b0eecde48cc0e_r.jpg&&&p&&img src=&/equation?tex=f_%7Bk%7D%28y_%7Bi-1%7D%2Cy_%7Bi%7D%2Cx%2Ci%29& alt=&f_{k}(y_{i-1},y_{i},x,i)& eeimg=&1&& 对应的权重系数 &img src=&/equation?tex=w_%7Bk%7D& alt=&w_{k}& eeimg=&1&& 如下:&/p&&img src=&/v2-25bc50a1ba9a3cbbd88cb588f4105000_b.jpg& data-caption=&& data-rawwidth=&494& data-rawheight=&64& class=&origin_image zh-lightbox-thumb& width=&494& data-original=&/v2-25bc50a1ba9a3cbbd88cb588f4105000_r.jpg&&&p&这样,linear-CRF的参数化形式简化为:&/p&&img src=&/v2-e8ebc3dbdcb7c084449abb076aacb03c_b.jpg& data-caption=&& data-rawwidth=&432& data-rawheight=&75& class=&origin_image zh-lightbox-thumb& width=&432& data-original=&/v2-e8ebc3dbdcb7c084449abb076aacb03c_r.jpg&&&p&其中, &img src=&/equation?tex=Z%28x%29& alt=&Z(x)& eeimg=&1&& 为规范化因子:&/p&&img src=&/v2-ce03fc3e88053add7d98a_b.jpg& data-caption=&& data-rawwidth=&417& data-rawheight=&71& class=&content_image& width=&417&&&img src=&/v2-af21d1a618d32de3f37674_b.jpg& data-caption=&& data-rawwidth=&585& data-rawheight=&82& class=&origin_image zh-lightbox-thumb& width=&585& data-original=&/v2-af21d1a618d32de3f37674_r.jpg&&&p&则linear-CRF的参数化形式简化为内积形式如下:&/p&&img src=&/v2-4c802a96b2f0bd0e8ddceeac4546da42_b.jpg& data-caption=&& data-rawwidth=&533& data-rawheight=&78& class=&origin_image zh-lightbox-thumb& width=&533& data-original=&/v2-4c802a96b2f0bd0e8ddceeac4546da42_r.jpg&&&p&&b&1.8&/b& &b&线性链条件随机场的矩阵形式&/b&&/p&&p&将linear-CRF的参数化形式写成矩阵形式。为此定义一个 &img src=&/equation?tex=m%5Ctimes+m& alt=&m\times m& eeimg=&1&& 的矩阵 &img src=&/equation?tex=M& alt=&M& eeimg=&1&& , &img src=&/equation?tex=m& alt=&m& eeimg=&1&& 为 &img src=&/equation?tex=y& alt=&y& eeimg=&1&& 所有可能的状态的取值个数。 &img src=&/equation?tex=M& alt=&M& eeimg=&1&& 定义如下:&/p&&img src=&/v2-c4496c53fce6e10d0b0f80aa07390a71_b.jpg& data-caption=&& data-rawwidth=&631& data-rawheight=&65& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/v2-c4496c53fce6e10d0b0f80aa07390a71_r.jpg&&&p&引入起点和终点标记 &img src=&/equation?tex=y_%7B0%7D%3Dstart%2Cy_%7Bn%2B1%7D%3Dstop& alt=&y_{0}=start,y_{n+1}=stop& eeimg=&1&& ,这样,标记序列 &img src=&/equation?tex=y& alt=&y& eeimg=&1&& 的非规范化概率可以通过 &img src=&/equation?tex=n%2B1& alt=&n+1& eeimg=&1&& 个矩阵元素的乘积得到,即:&/p&&img src=&/v2-faf9e2cdcc_b.jpg& data-caption=&& data-rawwidth=&515& data-rawheight=&74& class=&origin_image zh-lightbox-thumb& width=&515& data-original=&/v2-faf9e2cdcc_r.jpg&&&p&其中, &img src=&/equation?tex=Z_%7Bw%7D%28x%29& alt=&Z_{w}(x)& eeimg=&1&& 为规范化因子。&/p&&h2&&b&2 前向后向算法评估标记序列概率&/b&&/h2&&p&linear-CRF需要解决的三个问题:评估,学习和解码。&/p&&p&这三个问题和HMM是非常类似的,本节关注于第一个问题:评估。&/p&&p&&b&2.1 linear-CRF的三个基本问题&/b&&/p&&p&linear-CRF第一个问题是评估,即给定 linear-CRF的条件概率分布 &img src=&/equation?tex=P%28y%7Cx%29& alt=&P(y|x)& eeimg=&1&& ,在给定输入序列 &img src=&/equation?tex=x& alt=&x& eeimg=&1&& 和输出序列 &img src=&/equation?tex=y& alt=&y& eeimg=&1&& 时,计算条件概率 &img src=&/equation?tex=P%28y_%7Bi%7D%7Cx%29& alt=&P(y_{i}|x)& eeimg=&1&& 和 &img src=&/equation?tex=P%28y_%7Bi-1%7D%2Cy_%7Bi%7D%7Cx%29& alt=&P(y_{i-1},y_{i}|x)& eeimg=&1&& 以及对应的期望。&/p&&p&linear-CRF第二个问题是学习,即给定训练数据集 &img src=&/equation?tex=X& alt=&X& eeimg=&1&& 和 &img src=&/equation?tex=Y& alt=&Y& eeimg=&1&& ,学习linear-CRF的模型参数 &img src=&/equation?tex=w_%7Bk%7D& alt=&w_{k}& eeimg=&1&& 和条件概率 &img src=&/equation?tex=P_%7Bw%7D%28y%7Cx%29& alt=&P_{w}(y|x)& eeimg=&1&& 。&/p&&p&linear-CRF第三个问题是解码,即给定 linear-CRF的条件概率分布 &img src=&/equation?tex=P%28y%7Cx%29& alt=&P(y|x)& eeimg=&1&& ,和输入序列 &img src=&/equation?tex=x& alt=&x& eeimg=&1&& ,计算使条件概率最大的输出序列 &img src=&/equation?tex=y& alt=&y& eeimg=&1&& 。&/p&&p&&b&2.2&/b& &b&linear-CRF的前向后向概率概述&/b&&/p&&p&要计算条件概率 &img src=&/equation?tex=P%28y_%7Bi%7D%7Cx%29& alt=&P(y_{i}|x)& eeimg=&1&& 和 &img src=&/equation?tex=P%28y_%7Bi-1%7D%2Cy_%7Bi%7D%7Cx%29& alt=&P(y_{i-1},y_{i}|x)& eeimg=&1&& ,也可以使用和HMM类似的方法,使用前向后向算法来完成。首先我们来看前向概率的计算。&/p&&p&定义 &img src=&/equation?tex=%5Calpha_%7Bi%7D%28y_%7Bi%7D%7Cx%29& alt=&\alpha_{i}(y_{i}|x)& eeimg=&1&& 表示序列位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 的标记是 &img src=&/equation?tex=y_%7Bi%7D& alt=&y_{i}& eeimg=&1&& 时,在位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子 &img src=&/equation?tex=Z%28x%29& alt=&Z(x)& eeimg=&1&& 在分母里面。&/p&&p&定义了下式:&/p&&img src=&/v2-e8fc99ccf091f9fd22d70_b.jpg& data-caption=&& data-rawwidth=&496& data-rawheight=&70& class=&origin_image zh-lightbox-thumb& width=&496& data-original=&/v2-e8fc99ccf091f9fd22d70_r.jpg&&&p&这个式子定义了在给定 &img src=&/equation?tex=y_%7Bi-1%7D& alt=&y_{i-1}& eeimg=&1&& 时,从 &img src=&/equation?tex=y_%7Bi-1%7D& alt=&y_{i-1}& eeimg=&1&& 转移到 &img src=&/equation?tex=y_%7Bi%7D& alt=&y_{i}& eeimg=&1&& 的非规范化概率。&/p&&p&这样,可以得到序列位置 &img src=&/equation?tex=i%2B1& alt=&i+1& eeimg=&1&& 的标记是 &img src=&/equation?tex=y_%7Bi%2B1%7D& alt=&y_{i+1}& eeimg=&1&& 时,在位置 &img src=&/equation?tex=i%2B1& alt=&i+1& eeimg=&1&& 之前的部分标记序列的非规范化概率 &img src=&/equation?tex=%5Calpha_%7Bi%2B1%7D%28y_%7Bi%2B1%7D%7Cx%29& alt=&\alpha_{i+1}(y_{i+1}|x)& eeimg=&1&& 的递推公式:&/p&&img src=&/v2-0f823caa45f5ba738a3ff_b.jpg& data-caption=&& data-rawwidth=&474& data-rawheight=&59& class=&origin_image zh-lightbox-thumb& width=&474& data-original=&/v2-0f823caa45f5ba738a3ff_r.jpg&&&p&在起点处,我们定义:&/p&&img src=&/v2-a826d424a25d907eaadedfb_b.jpg& data-caption=&& data-rawwidth=&428& data-rawheight=&52& class=&origin_image zh-lightbox-thumb& width=&428& data-original=&/v2-a826d424a25d907eaadedfb_r.jpg&&&p&假设我们可能的标记总数是 &img src=&/equation?tex=m& alt=&m& eeimg=&1&& ,则 &img src=&/equation?tex=y_%7Bi%7D& alt=&y_{i}& eeimg=&1&& 的取值就有 &img src=&/equation?tex=m& alt=&m& eeimg=&1&& 个,用 &img src=&/equation?tex=%5Calpha_%7Bi%7D%28x%29& alt=&\alpha_{i}(x)& eeimg=&1&& 表示这 &img src=&/equation?tex=m& alt=&m& eeimg=&1&& 个值组成的前向向量如下:&/p&&img src=&/v2-06eba9fefdc63d1b5c0c8a_b.jpg& data-caption=&& data-rawwidth=&560& data-rawheight=&134& class=&origin_image zh-lightbox-thumb& width=&560& data-original=&/v2-06eba9fefdc63d1b5c0c8a_r.jpg&&&p&这样递推公式可以用矩阵乘积表示:&/p&&img src=&/v2-684b417da5e1bbeaf69447_b.jpg& data-caption=&& data-rawwidth=&429& data-rawheight=&42& class=&origin_image zh-lightbox-thumb& width=&429& data-original=&/v2-684b417da5e1bbeaf69447_r.jpg&&&p&同样的,定义 &img src=&/equation?tex=%5Cbeta_%7Bi%7D%28y_%7Bi%7D%7Cx%29& alt=&\beta_{i}(y_{i}|x)& eeimg=&1&& 表示序列位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 的标记是 &img src=&/equation?tex=y_%7Bi%7D& alt=&y_{i}& eeimg=&1&& 时,在位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 之后的从 &img src=&/equation?tex=i%2B1& alt=&i+1& eeimg=&1&& 到 &img src=&/equation?tex=n& alt=&n& eeimg=&1&& 的部分标记序列的非规范化概率。&/p&&p&这样,可以得到序列位置 &img src=&/equation?tex=i%2B1& alt=&i+1& eeimg=&1&& 的标记是 &img src=&/equation?tex=y_%7Bi%2B1%7D& alt=&y_{i+1}& eeimg=&1&& 时,在位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 之后的部分标记序列的非规范化概率 &img src=&/equation?tex=%5Cbeta_%7Bi%7D%28y_%7Bi%7D%7Cx%29& alt=&\beta_{i}(y_{i}|x)& eeimg=&1&& 的递推公式:&/p&&img src=&/v2-d9f56b905e62ffabadf24_b.jpg& data-caption=&& data-rawwidth=&467& data-rawheight=&43& class=&origin_image zh-lightbox-thumb& width=&467& data-original=&/v2-d9f56b905e62ffabadf24_r.jpg&&&p&在终点处,我们定义:&/p&&img src=&/v2-aecf2be955bdaee09680e_b.jpg& data-caption=&& data-rawwidth=&430& data-rawheight=&63& class=&origin_image zh-lightbox-thumb& width=&430& data-original=&/v2-aecf2be955bdaee09680e_r.jpg&&&p&如果用向量表示,则有:&/p&&img src=&/v2-a0f8bd398f7df906d399bb85_b.jpg& data-caption=&& data-rawwidth=&381& data-rawheight=&48& class=&content_image& width=&381&&&p&由于规范化因子 &img src=&/equation?tex=Z%28x%29& alt=&Z(x)& eeimg=&1&& 的表达式是:&/p&&img src=&/v2-cbad0799bdcf51f93836e4cfaed14173_b.jpg& data-caption=&& data-rawwidth=&450& data-rawheight=&69& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&/v2-cbad0799bdcf51f93836e4cfaed14173_r.jpg&&&p&也可以用向量来表示 &img src=&/equation?tex=Z%28x%29& alt=&Z(x)& eeimg=&1&& :&/p&&img src=&/v2-ea3b7c335b_b.jpg& data-caption=&& data-rawwidth=&429& data-rawheight=&41& class=&origin_image zh-lightbox-thumb& width=&429& data-original=&/v2-ea3b7c335b_r.jpg&&&p&其中, &img src=&/equation?tex=1& alt=&1& eeimg=&1&& 是 &img src=&/equation?tex=m& alt=&m& eeimg=&1&& 维全1向量。&/p&&p&&b&2.3&/b& &b&linear-CRF的前向后向概率计算&/b&&/p&&p&有了前向后向概率的定义和计算方法,我们就很容易计算序列位置 &img src=&/equation?tex=i& alt=&i& eeimg=&1&& 的标记是 &img src=&/equation?tex=y_%7Bi%7D& alt=&y_{i}& eeimg=&1&& 的条件概率 &img src=&/equation?tex=P%28y_%7Bi%7D%7Cx%29& alt=&P(y_{i}|x)& eeimg=&1&& :&/p&&img src=&/v2-ed75af389b5a_b.jpg& data-caption=&& data-rawwidth=&631& data-rawheight=&154& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/v2-ed75af389b5a_r.jpg&&&p&&b&2.4 linear-CRF的期望计算&/b&&/p&&p&有了上一节计算的条件概率,我们也可以很方便的计算联合分布 &img src=&/equation?tex=P%28x%2Cy%29& alt=&P(x,y)& eeimg=&1&& 和条件分布 &img src=&/equation?tex=P%28y%7Cx%29& alt=&P(y|x)& eeimg=&1&& 的期望。&/p&&img src=&/v2-4c0e415da87fe17b95f4dcc_b.jpg& data-caption=&& data-rawwidth=&689& data-rawheight=&408& class=&origin_image zh-lightbox-thumb& width=&689& data-original=&/v2-4c0e415da87fe17b95f4dcc_r.jpg&&&p&&b&2.5 linear-CRF前向后向算法总结&/b&&/p&&p&以上就是linear-CRF的前向后向算法。&/p&&p&注意到我们上面的非规范化概率 &img src=&/equation?tex=M_%7Bi%2B1%7D%28y_%7Bi%2B1%7D%2Cy_%7Bi%7D%7Cx%29& alt=&M_{i+1}(y_{i+1},y_{i}|x)& eeimg=&1&& 起的作用和HMM中的隐藏状态转移概率很像。但是这儿的概率是非规范化的,也就是不强制要求所有的状态的概率和为1。而HMM中的隐藏状态转移概率也规范化的。从这一点看,linear-CRF对序列状态转移的处理要比HMM灵活。&/p&&h2&&b&3 模型学习与维特比算法解码&/b&&/h2&&p&linear-CRF的第二个问题与第三个问题的求解。第二个问题是模型参数学习的问题,第三个问题是维特比算法解码的问题。&/p&&p&&b&3.1&/b& &b&linear-CRF模型参数学习思路&/b&&/p&&img src=&/v2-b812af3d60a96e6a76202_b.jpg& data-caption=&& data-rawwidth=&630& data-rawheight=&274& class=&origin_image zh-lightbox-thumb& width=&630& data-original=&/v2-b812af3d60a96e6a76202_r.jpg&&&p&求解这个问题有很多思路,比如梯度下降法,牛顿法,拟牛顿法。也可以使用最大熵模型中使用的改进的迭代尺度法(improved iterative scaling, IIS)来求解。&/p&&p&&b&3.2 linear-CRF模型参数学习之梯度下降法求解&/b&&/p&&p&在使用梯度下降法求解模型参数之前,我们需要定义我们的优化函数,一般极大化条件分布 &img src=&/equation?tex=P_%7Bw%7D%28y%7Cx%29& alt=&P_{w}(y|x)& eeimg=&1&&
的对数似然函数如下:&/p&&img src=&/v2-9cdbae9639ceaeb44936c_b.jpg& data-caption=&& data-rawwidth=&526& data-rawheight=&72& class=&origin_image zh-lightbox-thumb& width=&526& data-original=&/v2-9cdbae9639ceaeb44936c_r.jpg&&&img src=&/v2-80bd4df7c29_b.jpg& data-caption=&& data-rawwidth=&667& data-rawheight=&417& class=&origin_image zh-lightbox-thumb& width=&667& data-original=&/v2-80bd4df7c29_r.jpg&&&p&有了 &img src=&/equation?tex=w& alt=&w& eeimg=&1&& 的导数表达式,就可以用梯度下降法来迭代求解最优的 &img src=&/equation?tex=w& alt=&w& eeimg=&1&& 了。注意在迭代过程中,每次更新 &img src=&/equation?tex=w& alt=&w& eeimg=&1&& 后,需要同步更新 &img src=&/equation?tex=P_%7Bw%7D%28x%2Cy%29& alt=&P_{w}(x,y)& eeimg=&1&& 以用于下一次迭代的梯度计算。&/p&&p&以上就是linear-CRF模型参数学习之梯度下降法求解思路总结。&/p&&p&&b&3.3 linear-CRF模型维特比算法解码思路&/b&&/p&&p&现在我们来看linear-CRF的第三个问题:解码。&/p&&p&在这个问题中,给定条件随机场的条件概率 &img src=&/equation?tex=P%28y%7Cx%29& alt=&P(y|x)& eeimg=&1&& 和一个观测序列 &img src=&/equation?tex=x& alt=&x& eeimg=&1&& ,要求出满足 &img src=&/equation?tex=P%28y%7Cx%29& alt=&P(y|x)& eeimg=&1&& 最大的序列 &img src=&/equation?tex=y& alt=&y& eeimg=&1&& 。&/p&&p&这个解码算法最常用的还是和HMM解码类似的维特比算法。&/p&&p&维特比算法本身是一个动态规划算法,利用了两个局部状态和对应的递推公式,从局部递推到整体,进而得解。对于具体不同的问题,仅仅是这两个局部状态的定义和对应的递推公式不同而已。&/p&&img src=&/v2-e3d0dc6a6a0cd62bde7d9c_b.jpg& data-caption=&& data-rawwidth=&668& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&668& data-original=&/v2-e3d0dc6a6a0cd62bde7d9c_r.jpg&&&p&&b&3.4&/b& &b&linear-CRF模型维特比算法流程&/b&&/p&&p&现在我们总结下 linear-CRF模型维特比算法流程:&/p&&p&输入:模型的 &img src=&/equation?tex=K& alt=&K& eeimg=&1&& 个特征函数,和对应的 &img src=&/equation?tex=k& alt=&k& eeimg=&1&& 个权重。观测序列 &img src=&/equation?tex=x%3D%28x_%7B1%7D%2Cx_%7B2%7D%2C...%2Cx_%7Bn%7D%29& alt=&x=(x_{1},x_{2},...,x_{n})& eeimg=&1&& ,可能的标记个数 &img src=&/equation?tex=m& alt=&m& eeimg=&1&&&/p&&p&输出:最优标记序列 &img src=&/equation?tex=y%5E%7B%2A%7D%3D%28y_%7B1%7D%5E%7B%2A%7D%2Cy_%7B2%7D%5E%7B%2A%7D%2C...%2Cy_%7Bn%7D%5E%7B%2A%7D%29& alt=&y^{*}=(y_{1}^{*},y_{2}^{*},...,y_{n}^{*})& eeimg=&1&&&/p&&img src=&/v2-8c38855ab63dce1d3dcff04_b.jpg& data-caption=&& data-rawwidth=&650& data-rawheight=&565& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&/v2-8c38855ab63dce1d3dcff04_r.jpg&&&p&&b&3.5&/b& &b&linear-CRF模型维特比算法实例&/b&&/p&&p&下面用一个具体的例子来描述 linear-CRF模型维特比算法,例子的模型来源于《统计学习方法》。&/p&&img src=&/v2-e9a2a018ba2ab5eed6b7_b.jpg& data-caption=&& data-rawwidth=&627& data-rawheight=&409& class=&origin_image zh-lightbox-thumb& width=&627& data-original=&/v2-e9a2a018ba2ab5eed6b7_r.jpg&&&img src=&/v2-e57bc9a7d72cbd5c8d945_b.jpg& data-caption=&& data-rawwidth=&704& data-rawheight=&422& class=&origin_image zh-lightbox-thumb& width=&704& data-original=&/v2-e57bc9a7d72cbd5c8d945_r.jpg&&&p&&b&3.6&/b& &b&linear-CRF vs HMM&/b&&/p&&p&linear-CRF模型和HMM模型有很多相似之处,尤其是其三个典型问题非常类似,除了模型参数学习的问题求解方法不同以外,概率估计问题和解码问题使用的算法思想基本也是相同的。同时,两者都可以用于&b&序列模型&/b&,因此都广泛用于自然语言处理的各个方面。&/p&&p&现在来看看两者的不同点。&/p&&p&最大的不同点是linear-CRF模型是判别模型,而HMM是生成模型,即linear-CRF模型要优化求解的是条件概率P(y|x),则HMM要求解的是联合分布P(x,y)。第二,linear-CRF是利用最大熵模型的思路去建立条件概率模型,对于观测序列并没有做马尔科夫假设。而HMM是在对观测序列做了马尔科夫假设的前提下建立联合分布的模型。&/p&&p&只有linear-CRF模型和HMM模型才是可以比较讨论的。但是linear-CRF是CRF的一个特例,CRF本身是一个可以适用于很复杂条件概率的模型,因此理论上CRF的使用范围要比HMM广泛的多。&/p&
以下内容来自Pinard-博客园的学习笔记,总结如下:1 条件随机场CRF:从条件随机场到线性链条件随机场条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。…
&img src=&/50/v2-cadf362ccae_b.jpg& data-rawwidth=&5184& data-rawheight=&3456& class=&origin_image zh-lightbox-thumb& width=&5184& data-original=&/50/v2-cadf362ccae_r.jpg&&&blockquote&&b&简评&/b&:可以应用于任何手机,把相片提高到单反级别。相关下载请看文末。&/blockquote&&p&本文翻译,以下我们都代表原作者团队。&/p&&p&尽管智能手机的内置相机质量连年提高,但由于物理限制(传感器尺寸、镜头紧凑、缺乏特定的硬件)的存在,画质一直无法和单反相机相媲美。&/p&&p&在本文的项目中,我们提出了一个端到端的深度学习方法,通过把普通照片转化为单反级质量的图像,来弥补其二者的差距。我们使用残余卷积神经网络来改善色彩再现和图像清晰度。&/p&&p&由于标准均方损失不太适合测量感知图像质量,因此我们引入了一个复合的感知误差函数,它将内容,颜色和纹理损失相结合。前两个损失是通过分析来定义的,纹理损失是通过对抗的方式学习的。&/p&&p&我们还提供了大型数据及 DPED,这个数据集是由三个不同手机和一个高端反光照相机拍摄的真实照片组成的。&/p&&p&我们的定量和定性评估显示,增强的图像质量可与单反相机拍摄的照片相媲美,而该方法可以推广到任何类型的智能设备上。&/p&&h2&在线demo&/h2&&p&&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&demo&i class=&icon-external&&&/i&&/a& 可直接上传照片来对比效果。&/p&&figure&&img data-rawheight=&430& src=&/v2-fec58d36d9ac5173ea91_b.jpg& data-rawwidth=&647& data-thumbnail=&/v2-fec58d36d9ac5173ea91_b.jpg& class=&origin_image zh-lightbox-thumb& width=&647& data-original=&/v2-fec58d36d9ac5173ea91_r.gif&&&figcaption&可以上传图片,查看原图和增强后的对比效果&/figcaption&&/figure&&br&&br&&p&&br&&/p&&p&以下是官方的效果展示,左侧是处理后,右侧是原图。&/p&&p&&b&城市数据集&/b&&/p&&img data-rawheight=&355& src=&/v2-139d3eb000bc4dee47e400a_b.jpg& data-rawwidth=&701& class=&origin_image zh-lightbox-thumb& width=&701& data-original=&/v2-139d3eb000bc4dee47e400a_r.jpg&&&img data-rawheight=&407& src=&/v2-e92c43e77a221ec98ae1a4aa2e2ccf40_b.jpg& data-rawwidth=&814& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&/v2-e92c43e77a221ec98ae1a4aa2e2ccf40_r.jpg&&&p&&b&iPhone 6 相机&/b&&/p&&img data-rawheight=&528& src=&/v2-0d6b84c3cfc3d3a3c169_b.jpg& data-rawwidth=&702& class=&origin_image zh-lightbox-thumb& width=&702& data-original=&/v2-0d6b84c3cfc3d3a3c169_r.jpg&&&img data-rawheight=&521& src=&/v2-6fff88f45d7ed0c527af03_b.jpg& data-rawwidth=&697& class=&origin_image zh-lightbox-thumb& width=&697& data-original=&/v2-6fff88f45d7ed0c527af03_r.jpg&&&img data-rawheight=&521& src=&/v2-61d73a425a211cbe726ae5b_b.jpg& data-rawwidth=&696& class=&origin_image zh-lightbox-thumb& width=&696& data-original=&/v2-61d73a425a211cbe726ae5b_r.jpg&&&img data-rawheight=&555& src=&/v2-caa31defba32a150d602f51_b.jpg& data-rawwidth=&740& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&/v2-caa31defba32a150d602f51_r.jpg&&&p&&b&华为 P9 莱卡相机&/b&&/p&&img data-rawheight=&556& src=&/v2-fbd0ce0ee2633cbb3fe701e816d18353_b.jpg& data-rawwidth=&742& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&/v2-fbd0ce0ee2633cbb3fe701e816d18353_r.jpg&&&p&&b&HTC One M9 相机&/b&&/p&&img data-rawheight=&537& src=&/v2-74d18ec8aac875e3dfdc_b.jpg& data-rawwidth=&934& class=&origin_image zh-lightbox-thumb& width=&934& data-original=&/v2-74d18ec8aac875e3dfdc_r.jpg&&&img data-rawheight=&532& src=&/v2-c914cb3071_b.jpg& data-rawwidth=&932& class=&origin_image zh-lightbox-thumb& width=&932& data-original=&/v2-c914cb3071_r.jpg&&&img data-rawheight=&525& src=&/v2-c930efd7959d7bbfd17a90e1c31927d6_b.jpg& data-rawwidth=&930& class=&origin_image zh-lightbox-thumb& width=&930& data-original=&/v2-c930efd7959d7bbfd17a90e1c31927d6_r.jpg&&&p&&b&魅族 M3s 相机&/b&&/p&&img data-rawheight=&594& src=&/v2-c05f11cfba4a40314d3f_b.jpg& data-rawwidth=&797& class=&origin_image zh-lightbox-thumb& width=&797& data-original=&/v2-c05f11cfba4a40314d3f_r.jpg&&&img data-rawheight=&597& src=&/v2-ba50dfbf56dc_b.jpg& data-rawwidth=&802& class=&origin_image zh-lightbox-thumb& width=&802& data-original=&/v2-ba50dfbf56dc_r.jpg&&&p&&b&小米 - 红米 3X 相机&/b&&/p&&img data-rawheight=&603& src=&/v2-2c1e675f4_b.jpg& data-rawwidth=&800& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/v2-2c1e675f4_r.jpg&&&img data-rawheight=&602& src=&/v2-bb1198bfc386913dfeb944dbc1a041d4_b.jpg& data-rawwidth=&804& class=&origin_image zh-lightbox-thumb& width=&804& data-original=&/v2-bb1198bfc386913dfeb944dbc1a041d4_r.jpg&&&p&&b&Nexus 5X 相机&/b&&/p&&img data-rawheight=&451& src=&/v2-0b494cd921372cdf106a5aed57e6b47a_b.jpg& data-rawwidth=&802& class=&origin_image zh-lightbox-thumb& width=&802& data-original=&/v2-0b494cd921372cdf106a5aed57e6b47a_r.jpg&&&img data-rawheight=&455& src=&/v2-ebd0ea5a4_b.jpg& data-rawwidth=&804& class=&origin_image zh-lightbox-thumb& width=&804& data-original=&/v2-ebd0ea5a4_r.jpg&&&h2&DPED:单反级照片增强数据集&/h2&&p&通过降低质量的手机相片提高到单反级画质,我们引入了三部智能手机和一部单反相机,组成大型的 DPED 数据集,用于收集数据的设备分别是: &a href=&/?target=https%3A//en.wikipedia.org/wiki/IPhone_3GS& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&iPhone 3GS&i class=&icon-external&&&/i&&/a&,&a href=&/?target=https%3A//en.wikipedia.org/wiki/BlackBerry_Passport& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BlackBerry Passport&i class=&icon-external&&&/i&&/a&,&a href=&/?target=https%3A//en.wikipedia.org/wiki/Sony_Xperia_Z& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sony Xperia Z&i class=&icon-external&&&/i&&/a& 三部手机和 &a href=&/?target=https%3A//en.wikipedia.org/wiki/Canon_EOS_70D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Canon 70D &i class=&icon-external&&&/i&&/a&单反相机。为了确保他们同时工作,它们被安放在三角架上,通过无线控制。&/p&&img data-rawheight=&1248& src=&/v2-cb56fe539ba002564bebb116e8de5bb5_b.jpg& data-rawwidth=&1536& class=&origin_image zh-lightbox-thumb& width=&1536& data-original=&/v2-cb56fe539ba002564bebb116e8de5bb5_r.jpg&&&p&索尼智能手机照片 4549 张,iPhone 手机照片 5727 张,黑莓手机照片 6015 张。对于每张智能手机照片都有一个来自佳能数码单反相机的相应照片。这些照片是在白天在各种各样的地方以及各种照明和天气条件下拍摄的。图像是以自动模式拍摄的,我们在整个采集过程中使用了所有相机的默认设置。手机拍摄和单反拍摄出来的画面有所不同,我们通过 SIFT 特征进行了额外的非线性变换,以确保图像平齐。&/p&&img data-rawheight=&890& src=&/v2-fc22e5bd3e57bdc60baf824_b.jpg& data-rawwidth=&1071& class=&origin_image zh-lightbox-thumb& width=&1071& data-original=&/v2-fc22e5bd3e57bdc60baf824_r.jpg&&&p&&a href=&/?target=https%3A//goo.gl/forms/f7fCuEyhLXttSrA72& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&下载 CNN 培训数据集&i class=&icon-external&&&/i&&/a&(科学上网,同时需要填写一简单个表格)&/p&&p&&br&&/p&&h2&算法&/h2&&p&图像增强使用了 12 层的残差卷积神经网络,将手机照片作为输入数据,输出高质量单反级图像。&/p&&img data-rawheight=&1350& src=&/v2-aebfa546642_b.jpg& data-rawwidth=&1783& class=&origin_image zh-lightbox-thumb& width=&1783& data-original=&/v2-aebfa546642_r.jpg&&&p&换句话说,它的目标是「学习将&b&给定相机拍摄的照片修改为数码单反相机质量照片的底层转换&/b&功能」。该网络经过训练可以最大限度地减少由以下三个复合函数的损失:&/p&&ul&&li&色彩损失:增强后的图像应该在颜色方面接近目标(单反级)照片。为了衡量他们之间的差异,我们应用高斯模糊于两个图像,并计算欧氏距离。&/li&&li&纹理损失:为了测试增强图像的纹理质量,我们训练一个单独的 CNN 鉴别器来检测目标灰度图像,其目标是预测哪个是单反原图哪个是增强图像。我们的图像增强网络的目标是骗过鉴别器,让鉴别器无法区分哪个是单反图像,哪个是增强图像。&/li&&li&内容损失:一个独特的 VGG-19 CNN 在 Alexnet 上预先训练用于保存图像含义;由 CNN 产生的内容描述对于原图和增强图应该都是一样的标准。&/li&&/ul&&p&总结所有的损失,系统作为一个整体使用反向扩展,以逐渐减少图像损失。&/p&&h2&代码&/h2&&ul&&li&提出的模型和整个训练的 TensorFlow 实现,可在我们的 &a href=&/?target=https%3A///aiff22/DPED& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A///aiff22/DPED& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&中找到&i class=&icon-external&&&/i&&/a&&/li&&li&预训练模型 + 独立代码,可以在&a href=&/?target=https%3A///file/d/0BwOLOmqkYj-jcnZpaDR0dU9XMm8/view%3Fusp%3Dsharing& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&i class=&icon-external&&&/i&&/a&单独下载&/li&&li&先决条件:GPU + CUDA CuDNN + TensorFlow(& = 1.0.1)&/li&&/ul&&h2&引文&/h2&&ul&&li&&i&Andrey Ignatov, Nikolay Kobyshev, Radu Timofte, Kenneth Vanhoey&/i& and &i&Luc Van Gool.&/i&&/li&&li&&DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks&,&/li&&li&in IEEE International Conference on Computer Vision (ICCV), 2017&/li&&/ul&&p&&br&&/p&&blockquote&原文:&a href=&/?target=http%3A//people.ee.ethz.ch/%7Eihnatova/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DPED Project&i class=&icon-external&&&/i&&/a&&/blockquote&&p&&br&&/p&&p&日报延伸阅读:&/p&&ul&&li&&a href=&/p/& class=&internal&&使用深度学习创建专业级照片&/a&&/li&&li&&a href=&/p/?refer=jiguang-daily& class=&internal&&安利一个很火的 Github 滤镜项目&/a&&/li&&/ul&&p&&br&&/p&&h2&欢迎关注:&/h2&&ul&&li&专栏「&a href=&/jiguang-daily& class=&internal&&极光日报&/a&」,每天导读三篇英文,价值、思考、共鸣。&/li&&li&网易云音乐的电台「极光日报」,每周两期,听园长瞎白话。&/li&&/ul&
简评:可以应用于任何手机,把相片提高到单反级别。相关下载请看文末。本文翻译,以下我们都代表原作者团队。尽管智能手机的内置相机质量连年提高,但由于物理限制(传感器尺寸、镜头紧凑、缺乏特定的硬件)的存在,画质一直无法和单反相机相媲美。在本文的…
&p&纠正下,&b&精确率&/b&(precision)和&b&准确率&/b&(accuracy)是不一样的,题主问的应该是精确率与召回率之间的差别。&/p&&br&&br&一.定义辨析&br&&br&&p&刚开始接触这两个概念的时候总搞混,时间一长就记不清了。&/p&&br&&blockquote&实际上非常简单,&b&精确率&/b&是针对我们&b&预测结果&/b&而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是&br&&img src=&///equation?tex=P++%3D+%5Cfrac%7BTP%7D%7BTP%2BFP%7D& alt=&P
= \frac{TP}{TP+FP}& eeimg=&1&&&br&而&b&召回率&/b&是针对我们原来的&b&样本&/b&而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。&br&&img src=&///equation?tex=R+%3D+%5Cfrac%7BTP%7D%7BTP%2BFN%7D& alt=&R = \frac{TP}{TP+FN}& eeimg=&1&&&/blockquote&其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数。&br&&br&&img src=&/d701dacfed83901cea99e_b.png& data-rawwidth=&400& data-rawheight=&727& class=&content_image& width=&400&&在信息检索领域,精确率和召回率又被称为&b&查准率&/b&和&b&查全率&/b&,&br&&br&查准率=检索出的相关信息量 / 检索出的信息总量&br&查全率=检索出的相关信息量 / 系统中的相关信息总量&br&&br&&b&二.举个栗子&br&&/b&&br&&blockquote&假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,系统查找出50个,其中只有40个是真正的正样本,计算上述各指标。&br&&/blockquote&&br&&ul&&li&TP: 将正类预测为正类数
40&br&&/li&&li&FN: 将正类预测为负类数
20&/li&&li&FP: 将负类预测为正类数
10&/li&&li&TN: 将负类预测为负类数
30&/li&&/ul&&br&&b&准确率&/b&(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%&br&&b&精确率&/b&(precision) = TP/(TP+FP) = 80%&br&&b&召回率&/b&(recall) = TP/(TP+FN) = 2/3&br&&br&除此之外,还有ROC曲线,PR曲线,AUC等评价指标,可以参见我的博客:&a href=&///?target=http%3A//charleshm.github.io/2016/03/Model-Performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器学习性能评估指标&i class=&icon-external&&&/i&&/a&
纠正下,精确率(precision)和准确率(accuracy)是不一样的,题主问的应该是精确率与召回率之间的差别。 一.定义辨析 刚开始接触这两个概念的时候总搞混,时间一长就记不清了。 实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中…
&img src=&/50/v2-bcc90c8691e0feb3f678f6db02a70834_b.png& data-rawwidth=&1252& data-rawheight=&348& class=&origin_image zh-lightbox-thumb& width=&1252& data-original=&/50/v2-bcc90c8691e0feb3f678f6db02a70834_r.png&&&blockquote&&b&标题:&/b&《Generating High-Quality and Informative Conversation Responses with Sequence-to-Sequence Models》&br&&b&论文来源:&/b&EMNLP &br&&b&原文链接:&/b&&a href=&/?target=http%3A//aclweb.org/anthology/D17-1234& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&原文链接&i class=&icon-external&&&/i&&/a& &br&&b&声明:&/b&转载请注明出处:&a href=&/bupt-pris731& class=&internal&&学习ML的皮皮虾-知乎专栏&/a&&/blockquote&&h2&&b&Introduction&/b&&/h2&&p&要建立一个能够进行通用对话的计算机系统是一个富有挑战性的问题。Seq2Seq模型作为一种纯数据驱动的方式,在一些领域(例如机器翻译)已经达到了现有的最好效果。模型现在已经以源序列(sourse sequence)是对话历史,目标序列(target sequence)是机器生成的回答的形式运用在对话生成领域。&/p&&p&与运用于机器翻译的Seq2Seq模型的不同,生成对话回答在本质上来说是具有创造性的,目标是生成长的、能提供信息量、连贯以及具有多样性的回复,这的确还是一项很艰巨的任务。&/p&&h2&&b&Motivation&/b&&/h2&&p&在机器翻译中,目标生成的序列y中的高级语义内容完全是由源序列x给出的,即是给出一个源序列x,就存在一个低熵的条件分布P(y|x)。因此,解码器网络只需要跟踪输出的位置,就可以通过attention机制从源序列中的相关部分来转换生成目标的内容。但与此相比,对话系统中的问句(prompt)可能很短,但恰当的回答可能很长而且具有丰富的信息量。本文基于对话生成的这一目标特点,对传统seq2seq提出了以下几点修改:&/p&&ol&&li&在decoder模型中,加入了self-attention机制来保证长回答中的前后一致性,另外提出了一个叫glimpse model的实践方法来使之能扩展到更大的数据量上。&/li&&li&引入了逐段重排的随机beam search算法来在生成过程中及早的引入多样性。&/li&&/ol&&h2&&b&Models&/b&&/h2&&p&Seq2Seq Model with Attention on Target&/p&&p&标准的Seq2Seq模型在生成长的回答的时候可能会存在一些问题,原因是decoder必须跟踪所有的隐藏向量输出,这就可能导致一些不合理、甚至自相矛盾的回复(“The sun is in the centre of the sun”或“I dont own a gun,but I do own a gun”)。为了解决这个问题,这个模型在decoder中引入了target-side attention模型,来跟踪迄今为止解码器的输出。&/p&&p&&img src=&/equation?tex=P%28y_i%7C%5Cmathbf%7By%7D_%7B%5B0%3Ai-1%5D%7D%3B%5Cmathbf%7Bx%7D%29+%3D+DecoderRNN%28y_%7Bi-1%7D%2Ch_%7Bi-1%7D%2CAttention%28h_%7Bi-1%7D%2C%5Cmathbf%7Bx%7D%29%29+& alt=&P(y_i|\mathbf{y}_{[0:i-1]};\mathbf{x}) = DecoderRNN(y_{i-1},h_{i-1},Attention(h_{i-1},\mathbf{x})) & eeimg=&1&&&/p&&p&源序列 : &img src=&/equation?tex=%5Cmathbf%7Bx%7D& alt=&\mathbf{x}& eeimg=&1&& = (&img src=&/equation?tex=x_1& alt=&x_1& eeimg=&1&&,&img src=&/equation?tex=x_2& alt=&x_2& eeimg=&1&&,…&img src=&/equation?tex=x_M& alt=&x_M& eeimg=&1&&) &/p&&p&目标序列: &img src=&/equation?tex=%5Cmathbf%7By%7D& alt=&\mathbf{y}& eeimg=&1&& = (&img src=&/equation?tex=y_0+& alt=&y_0 & eeimg=&1&&,&img src=&/equation?tex=y_1& alt=&y_1& eeimg=&1&&,&img src=&/equation?tex=y_2& alt=&y_2& eeimg=&1&&,…&img src=&/equation?tex=y_N& alt=&y_N& eeimg=&1&&)&/p&&p&&img src=&/equation?tex=h_i& alt=&h_i& eeimg=&1&& :解码器网络隐层状态&/p&&p&Attention:给定 &img src=&/equation?tex=h_%7Bi-1%7D& alt=&h_{i-1}& eeimg=&1&& 的情况下,与产生预测 &img src=&/equation?tex=y_i& alt=&y_i& eeimg=&1&& 最相关的&b&x&/b&(the focus)&/p&&p&论文提出的算法是添加已经生成的目标序列部分到attention中来部署target-side attention,例如添加 &img src=&/equation?tex=%5Cmathbf%7By_%7B%5B0%3Ai-2%5D%7D%7D& alt=&\mathbf{y_{[0:i-2]}}& eeimg=&1&& 到attention function:&img src=&/equation?tex=Attention%28hi%E2%88%921%2C%5Cmathbf%7By_%7B%5B0%3Ai-2%5D%7D%7D%2C%5Cmathbf%7Bx%7D%29& alt=&Attention(hi-1,\mathbf{y_{[0:i-2]}},\mathbf{x})& eeimg=&1&& 。也就是将原本的生成时只依赖于前一个词变成了依赖所有的词,所以生成结果会更加合理,但同时也付出更大的计算量和内存。&/p&&p&为了权衡这一问题,文章另外提出了在attention时加入长为K的已生成序列(glimpse)的模型。训练中将目标序列拆成固定长度K的连续的段,训练每一段的时候,都将之前一段放进编码器内进行attention。&/p&&img src=&/50/v2-e44fcd57e0b_b.jpg& data-caption=&& data-rawwidth=&954& data-rawheight=&422& class=&origin_image zh-lightbox-thumb& width=&954& data-original=&/50/v2-e44fcd57e0b_r.jpg&&&p&因为decoder时用到的是当前glimpse之前的序列,利用双向RNN就可以在生成中学习到当前glimpse前后任意位置的target sequence。&/p&&p&另外模型存在一个缺陷,即为attention中仅仅包括当前段之前的一个glimpse,文章简单的将上一次encoder的最后一个隐层状态和当前decoder的初始隐层状态连接起来,从而不管glimpse的开始位置来让解码器访问到先前所有的symbols。&/p&&p&Stochastic Decoding with Segment-by-Segment Reranking&/p&&p&传统的beam search算法在decoder部分是基于MAP进行贪婪解码的,它将所有可能的扩展添加到每个现有的beam,然后选择B个得分最高的beam。这种方案生成的回复是高频的,而高频回复大多数都是类似于呵呵之类没什么价值的。文章提出Stochastic beam search算法步骤如下:(1)对于单个beam的扩展,不列举它所有的可能性,而是随机抽取他的D个扩展作为候选,对于所有的beam,就会一共产生B×D个候选。(2)然后在这B×D个候选中基于最大后验概率取出得分最高的B个用于下一步扩展,一直到搜索完毕或者得到我们想要的长度H为止,这时候就得到了B个候选的回复。&/p&&p&当使用的分类分布很尖锐的时候,这个算法很类似于标准的beam search,因为样本就是峰值附近的一类,但是当分布平稳的时候,选择就很多样性了,因为对话响应生成中要处理的概率模型是高熵的,所以平稳分布是在实践中经常见到的。&/p&&p&重排序的打分依照以下公式:&/p&&p&&img src=&/equation?tex=S%28%5Cmathbf%7By_k%7D%7C%5Cmathbf%7Bx%7D%2C%5Cmathbf%7By_%7B1%3Ak-1%7D%7D%29%3D%5Cfrac%7BP%28%5Cmathbf%7By_k%7D%7C%5Cmathbf%7Bx%7D%2C%5Cmathbf%7By_%7B1%3Ak-1%7D%7D%29%7D%7B%5Cprod_%7Bx%27%5Cin+%5CPhi+%7D%7BP%28%5Cmathbf%7By_k%7D%7C%5Cmathbf%7Bx%27%7D%2C%5Cmathbf%7By_%7B1%3Ak-1%7D%7D%29%7D%7D+& alt=&S(\mathbf{y_k}|\mathbf{x},\mathbf{y_{1:k-1}})=\frac{P(\mathbf{y_k}|\mathbf{x},\mathbf{y_{1:k-1}})}{\prod_{x'\in \Phi }{P(\mathbf{y_k}|\mathbf{x'},\mathbf{y_{1:k-1}})}} & eeimg=&1&&&/p&&p&其中 &img src=&/equation?tex=%7BP%28%5Cmathbf%7By_k%7D%7C%5Cmathbf%7Bx%7D%2C%5Cmathbf%7By_%7B1%3Ak-1%7D%7D%29%7D& alt=&{P(\mathbf{y_k}|\mathbf{x},\mathbf{y_{1:k-1}})}& eeimg=&1&& 是这个候选回复中最后一个词的转移概率,&img src=&/equation?tex=%5CPhi+& alt=&\Phi & eeimg=&1&& 是随机采样的源序列的集合,x'是从中抽取的问句(prompt),以这个问句作为encoder的输入,沿当前的response路径进行解码,查看最后一个词的转移概率,公式中的分母就是他们的概率和。&/p&&h2&&b&Experiment&/b&&/h2&&p&文章的另一大亮点是运用了大量的对话数据,用了很大规模的参数模型进行了实验。&/p&&h2&评价指标&/h2&&p&由于生成对话中的P(y|x)被拟定为高熵的,那么使用在翻译中用到的BLEU分数来进行评价并不是很合适。本文中拟定了两个评价标准:N-choose-1 accuracy和5-scale side-by-side human evaluation。&/p&&p&(1)N-choose-1 accuracy&/p&&p&在N-choose-K度量中,给出一个问句后,要求模型对N个候选的回复进行排序,在N个候选回复中,只有一个是真实生成的回应,其余的N-1个是来自相同数据集的随机答案。然后计算真正的答案在顶部K个答案中的比例。&/p&&p&(2)5-scale side-by-side human evaluation&/p&&p&在这种评估方式中,文章使用200个没有上下文的问句。这些问句并不限定于任何主题,都是开放领域的prompt。其中很多都需要一定的创造力来进行回答。评估由人类评估者来完成,为每个结果来进行打分:Excellent、Good、Acceptable、 Mediocre、Bad。&/p&&h2&实验结果&/h2&&p&(1)No Normalization表示用在decode路径上的联合概率P(y|x)来进行打分评价,Normalize by Marginal表示还要再除以答案本身的联合概率P(y)进行归一化,Normalize by Random Prompts就是使用上文中提到的rerank score。 &/p&&img src=&/50/v2-e7c7c035ccda1320_b.jpg& data-caption=&& data-rawwidth=&283& data-rawheight=&239& class=&content_image& width=&283&&&p&作为参考,人类在10-choose-1的准确率大概是45%。&/p&&p&(2)用一个K=10的模型和标准seq2seq模型的结果让人类进行评估。&/p&&img src=&/50/v2-c4a31fbf700ba0417bfe8c8df78b9f60_b.jpg& data-caption=&& data-rawwidth=&471& data-rawheight=&370& class=&origin_image zh-lightbox-thumb& width=&471& data-original=&/50/v2-c4a31fbf700ba0417bfe8c8df78b9f60_r.jpg&&&img src=&/50/v2-f10c22ed0b6c76d0e1589_b.jpg& data-caption=&& data-rawwidth=&471& data-rawheight=&333& class=&origin_image zh-lightbox-thumb& width=&471& data-original=&/50/v2-f10c22ed0b6c76d0e1589_r.jpg&&&img src=&/50/v2-d5f1c93aa1b1d2d1adaef6d_b.jpg& data-caption=&& data-rawwidth=&471& data-rawheight=&369& class=&origin_image zh-lightbox-thumb& width=&471& data-original=&/50/v2-d5f1c93aa1b1d2d1adaef6d_r.jpg&&&h2&&b&Conclusion&/b&&/h2&&p&建立可进行通用对话的end-to-end系统还处于起步阶段。文章展示了对原模型进行了小的修改再结合大数据量的训练就能取得一些可观的效果提高。&/p&&p&现在应该鼓励研究者将重心放在生成更通顺更长的回应上,而不仅仅是追求任务的BLEU等的指标,因为生成的任务本身差异性就很强。文章在生成时使用来绕开安全解的方式虽然有些暴力,但也被证明是一种有效的方法。&/p&
标题:《Generating High-Quality and Informative Conversation Responses with Sequence-to-Sequence Models》 论文来源:EMNLP 原文链接: 声明:转载请注明出处:Introduction要建立一个能够进行通用对话的计算机系统是…
&img src=&/50/v2-a7f872a80b9_b.png& data-rawwidth=&1005& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1005& data-original=&/50/v2-a7f872a80b9_r.png&&&p&说说你想项目中的激活函数,为啥选这个?有没有考虑过其他的激活函数?效果怎样?除此之外你还知道哪些激活函数?它们的应用场景是什么?优越点是什么?OMG~~~&/p&&p&大家常见的激活函数估计就是sigmod tanh Relu 等,最近好像出来一个啥 &img src=&/equation?tex=%5C%5B%7B%5Crm%7Bx%7D%7D%5C%3B%7B%5Crm%7Bsigmod%28x%29%7D%7D%5C%5D& alt=&\[{\rm{x}}\;{\rm{sigmod(x)}}\]& eeimg=&1&&
还有一些源自上述的几种激活函数&/p&&img src=&/v2-7fe7ac52da9a_b.jpg& data-caption=&& data-rawwidth=&1005& data-rawheight=&783& class=&origin_image zh-lightbox-thumb& width=&1005& data-original=&/v2-7fe7ac52da9a_r.jpg&&&figure&&img src=&/v2-203dce9f6cb2_b.jpg& data-rawwidth=&1006& data-rawheight=&383& class=&origin_image zh-lightbox-thumb& width=&1006& data-original=&/v2-203dce9f6cb2_r.jpg&&&figcaption&激活函数(来自网络)&/figcaption&&/figure&&blockquote&&a href=&/?target=http%3A//blog.csdn.net/u/article/details/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/u&/span&&span class=&invisible&&2/article/details/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &a href=&/?target=http%3A///p/6df4ab7c235c& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&常用激活函数的总结与比较&i class=&icon-external&&&/i&&/a& &a href=&/?target=http%3A///dudumiaomiao/p/6014205.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&神经网络与深度学习之激活函数 - 白鹭倾城 - 博客园&i class=&icon-external&&&/i&&/a&&/blockquote&&p&&br&&/p&&p&笔者只是一些问题的搬运工,具体需要对问题进行深入的小伙伴还望自己阅读相关文献,这里只是提出一些问题,以便于面试时问到,如果内容有一些错误,还望批评指正!&/p&
说说你想项目中的激活函数,为啥选这个?有没有考虑过其他的激活函数?效果怎样?除此之外你还知道哪些激活函数?它们的应用场景是什么?优越点是什么?OMG~~~大家常见的激活函数估计就是sigmod tanh Relu 等,最近好像出来一个啥 \[{\rm{x}}\;{\rm{sigmod(x…
&img src=&/50/v2-cde650c54f269ebcfc493_b.png& data-rawwidth=&2033& data-rawheight=&998& class=&origin_image zh-lightbox-thumb& width=&2033& data-original=&/50/v2-cde650c54f269ebcfc493_r.png&&&blockquote&Ps:喂喂喂,你萌不要光收藏不点赞呀_(:з」∠)_&/blockquote&&h2&emmmm...&/h2&&p&搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章!&/p&&h2&&b&零、前置知识1:&/b&&/h2&&p&在上一篇文章&a href=&/?target=http%3A//mp./s%3F__biz%3DMzIwNzc2NTk0NQ%3D%3D%26mid%3D%26idx%3D1%26sn%3Deed826ec891ac%26chksm%3D970c2ddca07ba4ca33ee14542cff236f8edc1ff0ef063354dda0f8893%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《前馈到反馈:解析RNN》&i class=&icon-external&&&/i&&/a&中,小夕从最简单的无隐藏层的前馈神经网络引出了简单的循环神经网络:&/p&&p&&img src=&/equation?tex=y%28t%29%3Df%28X%28t%29%2A+W+%2B+y%28t-1%29+%2A+V%2B+b%29+& alt=&y(t)=f(X(t)* W + y(t-1) * V+ b) & eeimg=&1&&&/p&&p&它就是&b&无隐藏层的&/b&循环神经网络,起名叫&b&“simple RNN”&/b&。&/p&&p&这种方式即在每个时刻做决策的时候都考虑一下上一个时刻的决策结果。画出图来就是酱的:&/p&&figure&&img src=&/v2-252ea7a35f4e710ef544_b.jpg& data-rawwidth=&2513& data-rawheight=&1434& class=&origin_image zh-lightbox-thumb& width=&2513& data-original=&/v2-252ea7a35f4e710ef544_r.jpg&&&figcaption&其中圆球里的下半球代表两向量的内积,上半球代表将内积结果激活&/figcaption&&/figure&&p&虽然通过这种简单反馈确实可以看出&b&每个时间点的决策会受前一时间点决策的影响&/b&,但是似乎很难让人信服这竟然能跟记忆扯上边!&/p&&p&想一下,人的日常行为流程是这样的。比如你在搭积木,那么每个时间点你的行为都会经历下面的子过程:&/p&&p&1、眼睛看到现在手里的积木。&br&2、回忆一下目前最高层的积木的场景。&br&3、结合1和2的信息来做出当前时刻积木插到哪里的决策。&/p&&p&相信聪明的小伙伴已经知道我要表达的意思啦。第1步手里的积木就是当前时刻的外部输入X;第2步就是调用历史时刻的信息/记忆;第3步就是融合X和历史记忆的信息来推理出决策结果,即RNN的一步前向过程的输出y(t)。&/p&&p&有没有更加聪明的小伙伴惊奇的注意到第2步!!!我们在回忆历史的时候,一般不是简单的回忆上一个积木的形状,而是去回忆一个更加&b&模糊而宏观&/b&的场景。在这个例子中,这个场景就是最近几次行为所产生出的抽象记忆——即“积木最高层的地形图”!&/p&&p&也就是说,人们在做很多时序任务的时候,尤其是稍微复杂的时序任务时,潜意识的做法&b&并不是直接将上个时刻的输出y(t-1)直接连接进来,而是连接一个模糊而抽象的东西进来&/b&!这个东西是什么呢?&/p&&p&当然就是神经网络中的&b&隐结点h&/b&啊!也就是说,人们潜意识里直接利用的是一段历史记忆融合后的东西h,而不单单是上一时间点的输出。而网络的输出则取自这个隐结点。所以更合理的刻画人的潜意识的模型应该是这样的:&/p&&figure&&img src=&/v2-2a4cbff5ac9f95fc4c1ea8_b.jpg& data-rawwidth=&1550& data-rawheight=&1233& class=&origin_image zh-lightbox-thumb& width=&1550& data-original=&/v2-2a4cbff5ac9f95fc4c1ea8_r.jpg&&&figcaption&记忆在隐单元中存储和流动,输出取自隐单元&/figcaption&&/figure&&p&这种加入了隐藏层的循环神经网络就是经典的RNN神经网络!即&b&“standard RNN”&/b&。&/p&&p&RNN从simple到standard的变动及其意义对于本文后续内容非常重要哦。&/p&&h2&&b&零、前置知识2: &/b&&/h2&&p&在上一篇文章&a href=&/?target=http%3A//mp./s%3F__biz%3DMzIwNzc2NTk0NQ%3D%3D%26mid%3D%26idx%3D1%26sn%3Deed826ec891ac%26chksm%3D970c2ddca07ba4ca33ee14542cff236f8edc1ff0ef063354dda0f8893%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《从前馈到反馈:循环神经网络(RNN)》&i class=&icon-external&&&/i&&/a&中简单讲解和证明过,由于在误差反向传播时,算出来的梯度会随着往前传播而发生&b&指数级&/b&的衰减或放大!而且这是在数学上板上钉钉的事情。因此,&b&RNN的记忆单元是短时的。&/b&&/p&&h2&&b&一、如何无损的运输梯度信息?&/b&&/h2&&p&好啦,那我们就借鉴前辈设计RNN的经验,从&b&simple&/b&版本开始,即无隐藏层的、简单完成输出到输入反馈的网络结构开始,去设计一个全新的、&b&可以解决梯度爆炸消失问题从而记住长距离依赖关系&/b&的神经网络吧!&/p&&p&那么&b&如何让梯度随着时间的流动不发生指数级消失或者爆炸呢?&/b&&/p&&p&好像想起来挺难的,但是这个问题可能中学生会解答!那就是让算出来的梯度恒为1!&b&因为1的任何次方都是1嘛&/b&( ̄? ̄)&/p&&p&所以按照这个搞笑的想法,我们把要设计的长时记忆单元&b&记为c(以下全部用c指代长时记忆单元)&/b&,那么我们设计出来的长时记忆单元的数学模型就是这样子喽:&/p&&p&&img src=&/equation?tex=c%28t%29+%3D+c%28t-1%29+& alt=&c(t) = c(t-1) & eeimg=&1&&&/p&&p&这样的话,误差反向传播时的导数就恒定为1啦~误差就可以一路无损耗的向前传播到网络的前端,从而学习到遥远的前端与网络末端的远距离依赖关系。&/p&&img src=&/v2-c53b699b1b48c70a6ee27a_b.jpg& data-caption=&& data-rawwidth=&825& data-rawheight=&796& class=&origin_image zh-lightbox-thumb& width=&825& data-original=&/v2-c53b699b1b48c70a6ee27a_r.jpg&&&p&路人:Excuse me?&/p&&p&不要急不要急,反正假设我们的c中存储了信息,那么c就能把这个信息一路带到输出层没问题吧?在T时刻算出来的梯度信息存储在c里后,它也能把梯度一路带到时刻0而无任何损耗也没问题吧?对吧( ̄? ̄)&/p&&p&所以信息的&b&运输问题解决了&/b&,那么就要解决对信息进行&b&装箱&/b&和&b&卸车&/b&的问题。&/p&&h2&二、如何将信息装入长时记忆单元?&/h2&&p&当然要先定义一下新信息是什么。不妨直接拿来simple RNN中对新信息的定义,即当前时刻的外部输入x(t)与前一时刻的网络输出(即反馈单元)y(t-1)联合得到网络在当前这一时刻get到的新信息,记为 &img src=&/equation?tex=%5Chat+c%28t%29& alt=&\hat c(t)& eeimg=&1&& 。即:&/p&&p&&img src=&/equation?tex=+%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=& \hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&&&/p&&blockquote&感谢评论区 &a class=&member_mention& href=&/people/42eb39dfddf7adaa3baa3ded57a8a7d6& data-hash=&42eb39dfddf7adaa3baa3ded57a8a7d6& data-hovercard=&p$b$42eb39dfddf7adaa3baa3ded57a8a7d6&&@hoshino042&/a& 指出此处笔误&/blockquote&&p&好,新信息 &img src=&/equation?tex=%5Chat+c& alt=&\hat c& eeimg=&1&& 定义完成。下面考虑把 &img src=&/equation?tex=%5Chat+c& alt=&\hat c& eeimg=&1&& 加到c里面去。如果把这个问题拿去问小学生的话,那么可能会兵分两路:&/p&&p&&b&1、乘进去!&br&2、加进去!&/b&&/p&&p&那么这两种哪种可行呢?&/p&&p&其实稍微一想就很容易判断:乘法操作更多的是作为一种对信息进行某种控制的操作(比如任意数与0相乘后直接消失,相当于关闭操作;任意数与大于1的数相乘后会被放大规模等),而加法操作则是新信息叠加旧信息的操作。&/p&&p&下面我们深入的讨论一下&b&乘性操作&/b&和&b&加性操作&/b&,这在理解LSTM里至关重要。当然,首先,你要掌握偏导的概念和方法、复合函数的求导法则、链式求导法则。有了这三点微积分基础后才能看懂哦。基础不够的童鞋可以跳过这里的讨论。&/p&&p&&b&论乘法:&/b&&/p&&p&乘法时即令长时记忆添加信息时的数学模型为:&/p&&p&&img src=&/equation?tex=+c%28t%29%3Dc%28t-1%29%2A%5Chat+c%28t%29+& alt=& c(t)=c(t-1)*\hat c(t) & eeimg=&1&&&/p&&p&因此网络完整数学模型如下:&/p&&p&&img src=&/equation?tex=c%28t%29%3Dc%28t-1%29%2A%5Chat+c%28t%29+& alt=&c(t)=c(t-1)*\hat c(t) & eeimg=&1&& 公式【0.1】&br&&img src=&/equation?tex=%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=&\hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【0.2】&br&&img src=&/equation?tex=y%28t%29%3Df%28c%28t%29%29+& alt=&y(t)=f(c(t)) & eeimg=&1&& 公式【0.3】&/p&&p&为了计算方便,还是像之前一样&b&假设激活函数为线性激活&/b&(即没有激活函数。实际上tanh在小值时可以近似为线性,relu在正数时也为线性,这个假设还是很无可厚非的),这时网络模型简化为:&/p&&p&&img src=&/equation?tex=+y%28t%29%3Dy%28t-1%29+%2A+%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=& y(t)=y(t-1) * (W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【1】&/p&&p&假如网络经过了T个时间步到了loss端,这时若要更新t=0时刻下网络参数V的权重,则即对t=0时刻的参数V求偏导,即计算&/p&&p&&img src=&/equation?tex=%5Cfrac%7B%5Cpartial+loss%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D+& alt=&\frac{\partial loss(t=T)}{\partial V(t=0)} & eeimg=&1&&&/p&&p&其中 &img src=&/equation?tex=loss%28t%3DT%29%3Df_%7Bloss%7D%28y%28t%3DT%29%29& alt=&loss(t=T)=f_{loss}(y(t=T))& eeimg=&1&&&/p&&p&(其中的f_loss(·)为损失函数)&/p&&p&好,稍微一算,发现 &img src=&/equation?tex=%5Cfrac%7B%5Cpartial+loss%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D%3Df_%7Bloss%7D%27%2Ay%27%28t%3DT%29+& alt=&\frac{\partial loss(t=T)}{\partial V(t=0)}=f_{loss}'*y'(t=T) & eeimg=&1&& 中的f_loss'的值就是我们要往前传的梯度(参数更新信息),则我们的目标就是讨论y'(t=T),写全了就是&/p&&p&&img src=&/equation?tex=%5Cfrac%7B%5Cpartial+y%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D+& alt=&\frac{\partial y(t=T)}{\partial V(t=0)} & eeimg=&1&& 公式【2】&/p&&p&对V求偏导时其他变量(就是说的W和x)自然也就成了常量,这里我们再做一个过分简化,直接删掉 &img src=&/equation?tex=W%5Ccdot+x%28t-1%29& alt=&W\cdot x(t-1)& eeimg=&1&& 项!(在y二阶乘方存在的情况下忽略一阶乘方),这时就可以直接展开公式【1】:&/p&&p&&img src=&/equation?tex=+y%28T%29+%3Dy%28T-1%29%5E2%5Ccdot+v%28T-1%29+%3Dv%280%29%5E%7B2%5ET-1%7D%5Ccdot+y%280%29%5E%7B2%5E%7BT-2%7D%7D+& alt=& y(T) =y(T-1)^2\cdot v(T-1) =v(0)^{2^T-1}\cdot y(0)^{2^{T-2}} & eeimg=&1&&&/p&&p&对v(0)求导的话,会得到&/p&&p&&img src=&/equation?tex=+y%27+%3Dy%280%29%5E%7B2%5E%7BT-2%7D%7D%5Ccdot+%282%5ET-1%29%5Ccdot+v%280%29%5E%7B2%5ET-2%7D+& alt=& y' =y(0)^{2^{T-2}}\cdot (2^T-1)\cdot v(0)^{2^T-2} & eeimg=&1&&&img src=&/equation?tex=%3Da%5Ccdot+v%280%29%5E%7B2%5ET-2%7D& alt=&=a\cdot v(0)^{2^T-2}& eeimg=&1&&&/p&&p&如果说RNN的 &img src=&/equation?tex=v%5ET& alt=&v^T& eeimg=&1&& 是音速级的梯度爆炸和消失,那这 &img src=&/equation?tex=v%5E%7B2%5ET-2%7D& alt=&v^{2^T-2}& eeimg=&1&& 简直是光速级爆炸和消失了呐!~&/p&&p&&b&所以说直接将新信息乘进长时记忆单元只会让情况更糟糕&/b&,导致当初c(t)=c(t-1)让导数恒为1的构想完全失效,&b&这也说明了乘性更新并不是简单的信息叠加,而是控制和scaling。&/b&&/p&&blockquote&&b&感谢评论区&/b& &a class=&member_mention& href=&/people/fbc2a45632b9dffad4e9ef& data-hash=&fbc2a45632b9dffad4e9ef& data-hovercard=&p$b$fbc2a45632b9dffad4e9ef&&@承翊&/a& 改进此处表述&/blockquote&&p&&b&论加法:&/b&&/p&&p&如果改成加性规则呢?此时添加信息的数学模型为&/p&&p&&img src=&/equation?tex=+c%28t%29%3Dc%28t-1%29%2B%5Chat+c%28t%29+& alt=& c(t)=c(t-1)+\hat c(t) & eeimg=&1&&&/p&&p&与前面的做法一样,假设线性激活并代入网络模型后得到&/p&&p&&img src=&/equation?tex=+y%28T%29+%3Dy%28T-1%29%2B%5Chat+c%28T%29& alt=& y(T) =y(T-1)+\hat c(T)& eeimg=&1&&&/p&&p&&img src=&/equation?tex=%3Dy%28T-1%29%2Bx%2Aw%2B+v%28T-1%29%2Ay%28T-1%29& alt=&=y(T-1)+x*w+ v(T-1)*y(T-1)& eeimg=&1&&&/p&&p&&img src=&/equation?tex=%3D%28v%280%29%2B1%29%5ET%2Ay%280%29%2BT%2Ax%2Aw& alt=&=(v(0)+1)^T*y(0)+T*x*w& eeimg=&1&&&/p&&p&噫?也有指数项~不过由于v加了一个偏置1,导致爆炸的可能性远远大于消失。不过通过做梯度截断,也能很大程度的缓解梯度爆炸的影响。&/p&&p&嗯~梯度消失的概率小了很多,梯度爆炸也能勉强缓解,看起来比RNN靠谱多了,毕竟控制好爆炸的前提下,梯度消失的越慢,记忆的距离就越长嘛。&/p&&p&因此,在往长时记忆单元添加信息方面,加性规则要显著优于乘性规则。&b&也证明了加法更适合做信息叠加,而乘法更适合做控制和scaling。&/b&&/p&&p&由此,我们就确定应用加性规则啦,至此我们设计的网络应该是这样子的:&/p&&p&&img src=&/equation?tex=c%28t%29%3Dc%28t-1%29%2B%5Chat+c%28t%29+& alt=&c(t)=c(t-1)+\hat c(t) & eeimg=&1&& 公式【3.1】&/p&&p&&img src=&/equation?tex=%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=&\hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【3.2】&/p&&p&&img src=&/equation?tex=y%28t%29%3Df%28c%28t%29%29+& alt=&y(t)=f(c(t)) & eeimg=&1&& 公式【3.3】&/p&&p&那么有没有办法&b&让信息装箱和运输同时存在的情况下,让梯度消失的可能性变的更低,让梯度爆炸的可能性和程度也更低呢?&/b&&/p&&p&你想呀,我们往长时记忆单元添加新信息的频率肯定是很低的,现实生活中只有很少的时刻我们可以记很久,大部分时刻的信息没过几天就忘了。因此现在这种模型一股脑的试图永远记住每个时刻的信息的做法肯定是不合理的,&b&我们应该只记忆该记的信息。&/b&&/p&&p&显然,对新信息选择记或者不记是一个控制操作,应该使用乘性规则。因此在新信息前加一个控制阀门,只需要让公式【3.1】变为&/p&&p&&img src=&/equation?tex=+c%28t%29%3Dc%28t-1%29%2Bg_%7Bin%7D%2A%5Chat+c%28t%29+& alt=& c(t)=c(t-1)+g_{in}*\hat c(t) & eeimg=&1&&&/p&&p&这个g_in我们就叫做&b&“输入门”&/b&啦,取值0.0~1.0。&/p&&p&为了实现这个取值范围,我们很容易想到使用&b&sigmoid函数&/b&作为输入门的激活函数,毕竟sigmoid的输出范围一定是在0.0到1.0之间嘛。因此以输入门为代表的控制门的激活函数均为sigmoid,因此控制门:&/p&&p&&img src=&/equation?tex=+g_x+%3D+sigmoid%28...%29+& alt=& g_x = sigmoid(...) & eeimg=&1&&&/p&&p&当然,这是对一个长时记忆单元的控制。我们到时候肯定要设置很多记忆单元的,要不然脑容量也太低啦。因此每个长时记忆单元都有它专属的输入门,在数学上我们不妨使用 &img src=&/equation?tex=%5Cotimes& alt=&\otimes& eeimg=&1&& 来表示这个按位相乘的操作,用大写字母C来表示长时记忆单元集合。即:&/p&&p&&img src=&/equation?tex=C%28t%29%3DC%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=&C(t)=C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&& 公式【4】&/p&&p&嗯~由于输入门只会在必要的时候开启,因此大部分情况下公式【4】可以看成C(t)=C(t-1),也就是我们最理想的状态。由此加性操作带来的梯度爆炸也大大减轻啦,梯度消失更更更轻了。&/p&&h2&三、频繁装填带来的问题&/h2&&p&等等,爱思考的同学可能会注意到一个问题。万一神经网络读到一段信息量很大的文本,以致于这时&b&输入门欣喜若狂,一直保持大开状态,狼吞虎咽的试图记住所有这些信息,会发生什么呢?&/b&&/p&&p&显然就会导致c的值变的非常大!&/p&&p&要知道,我们的网络要输出的时候是要把c激活的(参考公式【0.3】),当c变的很大时,sigmoid、tanh这些常见的激活函数的输出就完全饱和了!比如如图tanh:&/p&&img src=&/v2-d815aa55d11a7aced5c721_b.jpg& data-caption=&& data-rawwidth=&1275& data-rawheight=&829& class=&origin_image zh-lightbox-thumb& width=&1275& data-original=&/v2-d815aa55d11a7aced5c721_r.jpg&&&p&当c很大时,tanh趋近于1,这时c变得再大也没有什么意义了,因为饱和了!脑子记不住这么多东西!&/p&&p&这种情况怎么办呢?显然relu函数这种正向无饱和的激活函数是一种选择,但是我们总不能将这个网络输出的激活函数限定为relu吧?那也设计的太失败啦!&/p&&p&那怎么办呢?&/p&&p&其实想想我们自己的工作原理就知道啦。我们之所以既可以记住小时候的事情,也可以记住一年前的事情,也没有觉得脑子不够用,不就是因为我们。。。&b&爱忘事嘛&/b&。所以还需要加一个门用来忘事!这个门就叫做&b&“遗忘门”&/b&吧。&b&这样每个时刻到来的时候,记忆要先通过遗忘门忘掉一些事情再考虑要不要接受这个时刻的新信息。&/b&&/p&&p&显然,遗忘门是用来控制记忆消失程度的,因此也要用乘性运算,即我们设计的网络已进化成:&/p&&p&&img src=&/equation?tex=+c%28t%29%3Dg_%7Bforget%7Dc%28t-1%29%2Bg_%7Bin%7D%2A%5Chat+c%28t%29+& alt=& c(t)=g_{forget}c(t-1)+g_{in}*\hat c(t) & eeimg=&1&&&/p&&p&或者向量形式的:&/p&&p&&img src=&/equation?tex=C%28t%29%3Dg_%7Bforget%7DC%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=&C(t)=g_{forget}C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&&&/p&&p&好啦~解决了如何为我们的长时记忆单元可控的添加新信息的问题,又贴心的考虑到并优雅解决了信息输入太过丰富导致输入控制门“合不拢嘴”的尴尬情况,那么是时候考虑我们的长时记忆单元如何输出啦~&/p&&h2&四、网络如何输出&/h2&&p&有人说,输出有什么好考虑的,&b&当前的输出难道不就仅仅是激活当前的记忆吗?&/b&难道不就是最前面说的y(t)=f(c(t))?(其中f(·)为激活函数)&/p&&p&试想,假如人有1万个长时记忆的脑细胞,每个脑细胞记一件事情,那么我们在处理眼前的事情的时候是每个时刻都把这1万个脑细胞里的事情都回忆一遍吗?显然不是呀,&b&我们只会让其中一部分跟当前任务当前时刻相关的脑细胞输出&/b&,即应该给我们的长时记忆单元添加一个输出阀门!也就是说应该输出:&/p&&p&&img src=&/equation?tex=y%28t%29%3Dg_%7Bout%7D+%2A+f%28c%28t%29%29+& alt=&y(t)=g_{out} * f(c(t)) & eeimg=&1&&&/p&&p&嗯~终于看起来好像没有什么问题了。&/p&&h2&五、控制门受什么控制&/h2&&p&那么我们最后再&b&定义一下控制门们(输入门、遗忘门、输出门)受谁的控制就可以啦。&/b&&/p&&p&这个问题也很显然,当然就是让各个门受当前时刻的外部输入x(t)和上一时刻的输出y(t-1)啦,即 &img src=&/equation?tex=g_x%28t%29%3Df%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29& alt=&g_x(t)=f(W\cdot x(t)+V\cdot y(t-1))& eeimg=&1&& 。。。。。。?&/p&&p&好像这样的思维在RNN中并不会有什么问题,但!是!不要忘了在我们这个新设计的网络中,多了一堆阀门!尤其注意到输出门,&b&一旦输出门关闭,就会导致其控制的记忆f(c(t))被截断,下一时刻各个门就仅仅受当前时刻的外部输入x(t)控制了&/b&!这显然不符合我们的设计初衷(尽可能的让决策考虑到尽可能久的历史信息)。怎么办呢?&/p&&p&最简单的做法就是再把长时记忆单元接入各个门,即把上一时刻的长时记忆c(t-1)接入遗忘门和输入门,把当前时刻的长时记忆c(t)接入输出门(当信息流动到输出门的时候,当前时刻的长时记忆已经被计算完成了)。即&/p&&p&&img src=&/equation?tex=g_%7Bin%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{in}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&/equation?tex=g_%7Bforget%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{forget}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&/equation?tex=+g_%7Bout%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t%29%29+& alt=& g_{out}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t)) & eeimg=&1&&&/p&&p&当然,这个让各个门考虑长时记忆的做法是后人打的补丁}

我要回帖

更多关于 巴巴爸爸 动漫 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信