深度学习入门—理论杂谈(1)

前言
写文章比较随性,主要是个人学习资料的重点笔记的记录,这是关于深度学习的,学习的目的是打牢深度学习的理论基础。
书籍链接:http://neuralnetworksanddeeplearning.com/index.html
第一章
1、感知机模型网络:说它强大是因为其计算能力可以像其他任何计算设备一样,说其普通是因为它本质上不过是逻辑门而已,实现的都是各种等价的逻辑操作。
2、Sigmoid神经元:这个跟机器学习中的Sigmoid函数性质一样,目的是把输出值映射在某个区间内,在深度学习中使用此函数,作用是改善感知机模型不便于调试的弊端,即当微小的改变输入时,输出也跟着微小的改变。
3、关于远程克隆github代码的问题:直接运行git bash here即可,然后执行命令
git clone + 仓库代码地址(.git后缀名结束) 这个时候,代码就会被自动下载到你执行bash here的这个目录下。
4、神经网络给传统编程带来的变革就是:复杂的算法≤ 简单的学习算法+良好的训练数据
5、手写数字识别的经典数据集:http://yann.lecun.com/exdb/mnist/
6、具有这种多层结构的网络 - 两个或更多隐藏层 - 被称为深度神经网络。深网能够建立复杂的概念层次。这有点像传统编程语言使用模块化设计和抽象概念来创建复杂的计算机程序。将深层网络与浅层网络进行比较有点像将编程语言与能够调用精简语言的函数进行比较而无法进行此类调用。抽象在神经网络中采用与传统编程不同的形式,但它同样重要。
第二章
这一章的核心内容是反向传播算法的思想以及实现(繁琐的理论证明过程我们暂且忽略)
在这里插入图片描述
反向传播算法是神经网络中最有效的算法,其主要的思想是将网络最后输出的结果计算其误差,并且将误差反向逐级传下去,可以跟踪权重(和偏差)的小扰动,因为它们通过网络传播,到达输出,然后影响成本。
方向传播运用的是链式求导的基本思想(隐函数求导),例如:
在这里插入图片描述
举个简单的例子对于如下图所示的神经网络:
在这里插入图片描述
假设第一个神经元的表达式为f1(x)=w0+w1x, 第二个神经元的表达式为f2(y)=θ0+θ1y,那么实际上第一个神经元的输出是第二个神经元的输入,也就是第二个表达式中的y=f1(x)。对于训练这个模型首先采用前向传播算法(也就是按步骤计算得出输出结果):
对于输入x1 计算:
在这里插入图片描述
假设输出结果计算后得到y′1
构造代价函数为:
在这里插入图片描述
注:y1表示真实分类值,y′1表示预测值
计算误差之后需要将误差反向传播回去,首先计算最后一层的误差,更新θ1,θ0
在这里插入图片描述
然后再更新前一个节点的w1,w0
在这里插入图片描述
采用梯度下降依次逐层更新知道最终收敛为止。
注:公式中的α是学习率。
下面对BP算法做一个简单总结:
1、首先应该明确的是,反向传播算法是一个快速计算梯度的方式,本质上是计算梯度的,关于梯度下降法、随机梯度下降法、反向传播算法之间的区别和联系,详细可参考这个博客,写的十分漂亮。https://blog.csdn.net/dugudaibo/article/details/77017485
2、反向传播算法中的几个核心公式:
在这里插入图片描述
关于公式的证明和推导,可详细看相关的资料(我开篇推荐的那本书上面就有),现在我们初学可以暂且先当做黑盒子来看待。**注意一下第一个公式中间的运算符是矩阵的哈达玛积,即对应的元素直接相乘。**若想详细了解哈达玛积可参考其他资料
3、关于反向传播算法的伪代码:
在这里插入图片描述
用中文来解释就是:
1> 对第一层输入,首先设置一个激活函数(一般都是sigmoid函数)求出其激活值
2> 然后通过前向传播,逐步计算出每一层的激活值(某一层的激活值就是上一层的输出)
3> 从最后一层开始,计算误差,然后通过反向传播网络将误差向前传递
4> 一直这样迭代下去,直到得到最后我们想要的收敛参数
在这里插入图片描述
若转载请说明出处!下一篇将介绍BP算法的详细实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值