NLP复习之神经网络
NLP复习之神经网络
前言
tips:
- 设计神经网络时,输入层与输出层节点数往往固定,中间层可以自由指定;
- 神经网络中的拓扑与箭头代表预测过程数据流向,与训练的数据流有一定区别;
- 我们不妨重点关注连接线,因为它们是权重,是要训练得到的
神经元
神经元模型是一个包含输入、输出、计算功能的模型,注意中间的箭头线,称之为“连接”,上面有“权值”

一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。
MP神经元模型接收来自n个其他神经元传递过来的输入信号(x1~xn),这些输入信号通过带权重(θ或ω来表示权重,上图采用θ)的连接(Connection)进行传递,然后神经元(图示阈值为b)收到的总输入(所有输入和权重的乘积的和)与神经元的阈值b比较,并经由激活函数(Activation Function,又称响应函数)处理之后产生神经元的输出。
理想情况下,激活函数的形式应为阶跃函数(也就是修正线性单元ReLU),通常选择Sigmoid函数:
\]
其值域为\((0,1)\)。
神经元可以看做一个计算与存储单元,计算是神经元对其的输入进行计算,存储是神经元会暂存计算结果,传递到下一层。
多层神经网络
单层神经网络(感知机)在此处暂时忽略不写,期末要挂科了

上图展现了基本两层神经网络,其中\(x_i(i=1, 2, 3)\)为输入层值,\(a_i^{(k)}(k=1, 2, \dots, K; i = 1, 2, 3, \dots, N_k)\)表示第k层中,第i个神经元的激活值,\(N_k\)表示第k层的神经元个数。当k=1时,即为输入层,即\(a_i^{(1)}=x_i\),而\(x_0=1\)和\(a_0^{(2)}=1\)为偏置项
为了求最后的输出值\(h_{\theta}(x)=a_1^{(3)}\),我们需要计算隐藏层中每个神经元的激活值\(a_{ji}^{(k)}(k=2,3)\),而隐藏层/输出层的每一个神经元,都是由上一层神经元经过类似逻辑回归计算得到。
反向传播(BP算法)
给出一个示例,是我们的作业题目

(1)在该例子中什么是输入层,隐藏层,输出层,并对不同的层和层之间的权重矩阵进行维度标记。
(2)使用链式法则,在损失函数L上,分别对\(z^{[2]},z^{[1]}_1,z^{[1]}_2,x_1,x_2\),进行求偏导
解
(1)
输入层:\(x_1,x_2\),维度为\(2 \times 1\);
输入层与隐藏层之间的权重矩阵:\(w_{11}^{[1]},w_{12}^{[1]},w_{21}^{[1]},w_{22}^{[1]}\),维度为\(2 \times 2\);
经过加权求和与偏置后,得到:\(z_1^{[1]},z_2^{[1]}\),维度为\(2 \times 1\);
经过ReLU激活函数后得到隐藏层:\(a_1^{[1]},a_2^{[1]}\),维度为\(2 \times 1\);
隐藏层与输出层之间的权重矩阵:\(w_{11}^{[2]},w_{12}^{[2]}\),维度为\(1 \times 2\);
经过加权求和与偏置后,得到:\(z^{[2]}\),维度为\(1 \times 1\);
经过sigmoid激活函数后得到输出层:\(a^{[2]}\),维度为\(1 \times 1\)。
(2)
损失函数:
\]
所有表达式:
a^{[2]} &= \sigma{(z^{[2]})} \\
z^{[2]} &= w_{11}^{[2]}a_1^{[1]} + w_{12}^{[2]}a_2^{[1]} + b_1^{[2]} \\
a_1^{[1]} &= ReLU(z_1^{[1]}) \\
a_2^{[1]} &= ReLU(z_2^{[1]}) \\
z_1^{[1]} &= w_{11}^{[1]}x_1 + w_{12}^{[1]}x_2 + b_1^{[1]} \\
z_2^{[1]} &= w_{21}^{[1]}x_1 + w_{22}^{[1]}x_2 + b_2^{[1]}
\end{aligned}
\]
阶段求导:
\frac{\partial L}{\partial a^{[2]}} &= - [\frac{y}{a^{[2]}} + \frac{y - 1}{1 - a^{[2]}}] \\
\frac{\partial a^{[2]}}{\partial z^{[2]}} &= \sigma{(z^{[2]})}(1-\sigma{(a^{[2]})}) = a^{[2]}(1 - a^{[2]}) \\
\frac{\partial z^{[2]}}{\partial a_1^{[1]}} &= w_{11}^{[2]} \\
\frac{\partial z^{[2]}}{\partial a_2^{[1]}} &= w_{12}^{[2]} \\
\frac{\partial a_1^{[1]}}{\partial z_1^{[1]}} &= \begin{cases} 0,\text{for } z_1^{[1]} < 0 \\ 1,\text{for } z_1^{[1]} \geq 0 \end{cases} \\
\frac{\partial a_1^{[1]}}{\partial z_2^{[1]}} &= \begin{cases} 0,\text{for }
z_2^{[1]} < 0 \\ 1, \text{for } z_2^{[1]} \geq 0 \end{cases} \\
\frac{\partial z_1^{[1]}}{\partial x_1} &= w_{11}^{[1]},\frac{\partial z_1^{[1]}}{\partial x_2} = w_{12}^{[1]},\frac{\partial z_2^{[1]}}{\partial x_1} = w_{21}^{[1]},\frac{\partial z_2^{[1]}}{\partial x_2} = w_{22}^{[1]}
\end{aligned}
\]
链式求导:

NLP复习之神经网络的更多相关文章
- zz【清华NLP】图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐
[清华NLP]图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐 图神经网络研究成为当前深度学习领域的热点.最近,清华大学NLP课题组Jie Zhou, Ganqu Cui, Zhengy ...
- NLP教程(3) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- 斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- 斯坦福NLP课程 | 第2讲 - 词向量进阶
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 在 TensorFlow 中实现文本分类的卷积神经网络
在TensorFlow中实现文本分类的卷积神经网络 Github提供了完整的代码: https://github.com/dennybritz/cnn-text-classification-tf 在 ...
- 在TensorFlow中实现文本分类的卷积神经网络
在TensorFlow中实现文本分类的卷积神经网络 Github提供了完整的代码: https://github.com/dennybritz/cnn-text-classification-tf 在 ...
- 斯坦福NLP课程 | 第1讲 - NLP介绍与词向量初步
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- NLP教程(2) | GloVe及词向量的训练与评估
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- 推荐给前端开发的 5 款 Chrome 扩展 🚀
大家好,我是 dom 哥.这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星. 工欲善其事,必先利其器.Chrome 可能是前端开发中使用最多的浏览器.在日常开发中,下列几款 Ch ...
- 酷表ChatExcel -北大出品免费自动处理表格工具
酷表ChatExcel是通过文字聊天实现Excel的交互控制的AI辅助工具,期望通过对表输入需求即可得到处理后的数据(想起来很棒),减少额外的操作,辅助相关工作人员(会计,教师等)更简单的工作.Cha ...
- C#汉诺塔递归算法实现
目录: 一.什么是递归 1.先来看一下一个递归的例子 2.递归的基本原理 二.汉诺塔问题 1.汉诺塔的故事 2.回到编程,汉诺塔问题主要就是解决这个问题: 3.怎么解决汉诺塔问题 要解决汉诺塔问题就要 ...
- 手写spring的ioc的流程截图(笔记-1)
spring ioc是什么? IoC 容器是 Spring 的核心,也可以称为 Spring 容器.Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期. S ...
- 面试官:请列举 Spring 的事务会失效的场景
在日常工作中,如果对 Spring 的事务管理功能使用不当,则会造成 Spring 事务不生效的问题.而针对 Spring 事务不生效的问题,也是在跳槽面试中被问的比较频繁的一个问题. 今天,我们就一 ...
- maven 实现pb的实时编译
<properties> <protobuf.version>3.15.7</protobuf.version></properties> <ex ...
- 跑AI大模型的K8s与普通K8s有什么不同?
本文分享自华为云社区<跑AI大模型的K8s与普通K8s有什么不同?>,作者:tsjsdbd. 得益于AI开始火的时候,云原生体系已经普及,所以当前绝大多数的AI底层都是基于Kubernet ...
- 探究Python源码,终于弄懂了字符串驻留技术
摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...
- AI开发效率低,你可以试试华为NAIE AutoML
摘要:为解决AI工程师在开发AI应用场景所遇到的问题,NAIE平台落地AutoML框架(工具)来辅助大家更高效.更迅速解决AI开发问题. 你是不是还在为掌握的AI算法少而烦恼? 你是不是还在为选择某个 ...
- 云小课|使用SQL加密函数实现数据列的加解密
摘要:数据加密作为有效防止未授权访问和防护数据泄露的技术,在各种信息系统中广泛使用.作为信息系统的核心,GaussDB(DWS)数仓也提供数据加密功能,包括透明加密和使用SQL函数加密. 本文分享自华 ...