深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答

作业内容翻译:@胡杨(superhy199148@hotmail.com) && @胥可(feitongxiaoke@gmail.com)
解答与编排:寒小阳 && 龙心尘
时间:2016年6月
出处:http://blog.csdn.net/han_xiaoyang/article/details/51760923

说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学课程@Richard Socher教授的授权翻译与发表

0 前言

前面一个接一个的Lecture,看得老衲自己也是一脸懵逼,不过你以为你做一个安安静静的美男子(总感觉有勇气做deep learning的女生也是一条汉纸)就能在Stanford这样的学校顺利毕业啦?图样图森破,除掉极高的内容学习梯度,这种顶尖大学的作业和考试一样会让你突(tong)飞(bu)猛(yu)进(sheng)。

说起来,怎么也是堂堂斯坦福的课,这种最看重前言研究在实际工业应用的学校,一定是理论和应用并进,对动手能力要求极强的,于是乎,我们把作业和小测验(MD你这也敢叫小测验!!)也扒过来,整理整理,让大家都来体验体验。反正博主君自己每次折腾完这些大学的assignment之后,都会感慨一句,“还好不生在水生火热的万恶资本主义国家,才能让我大学和研究僧顺利毕业(什么?phd?呵呵…博主是渣渣,智商常年处于欠费状态,我就不参与你们高端人士的趴体了)”。

不能再BB了,直接开始做作业考试吧…

1 Softmax (10 分)

(part a) (5分)
证明针对任何输入向量 x 和常数c,softmax函数的输出不会随着输入向量偏移(也就是常数c)而改变。即:

softmax(x)=softmax(x+c)

其中 x+c 就是给 x 每一个元素加上常数c。注意:

softmax(x)i=exijexj

提示:在实际应用中,经常会用到这个性质。为了稳定地计算softmax概率,我们会选择 c=maxixi 。(即将 x 的每个元素减去最大的那个元素)。

博主:熬过了高中,居然又看见证明了,也是惊(ri)喜(le)万(gou)分(le),答案拿来!!!

解答:

证明,针对所有维度 1idim(x)

(softmax(x+c))i=exp(xi+c)dim(x)j=1exp(xj+c)=exp(c)exp(xi)exp(c)dim(x)j=1exp(xj)=exp(xi)dim(x)j=1exp(xj)=(softmax(x))i

(part b) (5 分)
已知一个N行d列的输入矩阵,计算每一行的softmax概率。在q1_softmax.py中写出你的实现过程,并使用python q1_softmax.py执行。

要求:你所写的代码应该尽可能的有效并以向量化的形式来实现。非向量化的实现将不会得到满分。

博主:简直要哭晕在厕所了,当年毕业设计也是加论文一星期都可以写完的节奏,这里一个5分的作业,还这么多要求…社会主义好…答案拿来!!!

import numpy as np

def softmax(x):
    """
        Softmax 函数
    """
    assert len(x.shape) > 1, "Softmax的得分向量要求维度高于1"
    x -= np.max(x, axis=1, keepdims=True)
    x = np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True)

    return x

2 神经网络基础(30分)

(part a) (3 分)
推导sigmoid函数的导数,并且只以sigmoid函数值的形式写出来(导数的表达式里只包含 σ(x) ,不包含x)。证明针对这个问题没必要单独考虑x。方便回忆:下面给出sigmoid函数形式:

σ(x)=11+ex

旁白:我年纪轻轻干嘛要走上深度学习这条不归路,真是生无所恋了。

答案 σ(x)=σ(x)(1σ(x))

(part b) (3 分)
当使用交叉熵损失来作为评价标准时,推导出损失函数以softmax为预测结果的输入向量 θ 的梯度。注意,

CE(y,ŷ )=iyilog(ŷ i)

其中 y 是一个one-hot向量, ŷ  是所有类别的预测出的概率向量。(提示:你需要考虑 y 的许多元素为0,并且假设 y 仅有第k个类别是1)

答案: CE(y,ŷ )θ=ŷ y

或者等价于下面表达式,其中假设k是正确的类别

CE(y,ŷ )θ={ ŷ i1,i=kŷ i,otherwise

(part c) (6 分)
推导出单隐层神经网络关于输入 x 的梯度(也就是推导出 Jx ,其中J是神经网络的损失函数)。这个神经网络在隐层和输出层采用了sigmoid激活函数, y 是one-hot编码向量,使用了交叉熵损失。(使用 σ(x)

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 我可以为您提供一些关于自然语言处理的参考文献:1. Jurafsky, D.和Martin, J.H. (2009). 自然语言处理:一个方法视角(第2版)。Pearson Education。2. Manning, C. D.,Raghavan, P.和Schütze, H. (2008). 自然语言处理(第3版)。Pearson Education。3. Bird, S.,Klein, E.和Loper, E. (2009). NLTK:自然语言处理与Python(第2版)。O'Reilly Media。 ### 回答2: 以下是与自然语言处理(Natural Language Processing,NLP)相关的几篇参考文献: 1. Jurafsky, D., & Martin, J. H. (2019). 《语音与语言处理》(Speech and Language Processing)(第3版)。该书是NLP领域的经典教材,介绍了语音处理、文本处理和自然语言理解等方面的基本概念和技术方法。 2. Manning, C. D., Raghavan, P., & Schütze, H. (2008). 《自然语言处理导论》(Introduction to Information Retrieval)。这本书主要介绍了信息检索和文本挖掘的基础知识,对于理解和应用自然语言处理技术有很大帮助。 3. Goldberg, Y. (2017). 《神经网络方法在自然语言处理中的应用》(Neural Network Methods for Natural Language Processing)。该论文综述了近年来神经网络在NLP中的应用,并介绍了一些常见的神经网络模型和技术。 4. Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013). "Word2Vec词向量训练"[C]。该论文介绍了Word2Vec模型,这是一种经典的基于神经网络的词向量训练方法,被广泛应用于NLP任务中。 5. Pennington, J., Socher, R., & Manning, C. (2014). 《斯坦福全局向量(Stanford GloVe)》(GloVe: Global Vectors for Word Representation)。该论文提出了GloVe模型,这是另一种用于学习词向量的方法,与Word2Vec相比具有一些优势。 这些参考文献可以帮助读者了解自然语言处理的基本概念和技术方法,以及一些常用的模型和算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值