没有合适的资源?快使用搜索试试~ 我知道了~
第四章神经网络的学习算法——随机梯度下降numpy代码详解
13 下载量 20 浏览量
2020-12-21
13:14:56
上传
评论 1
收藏 94KB PDF 举报
温馨提示
试读
4页
本专栏是书《深度学习入门》的阅读笔记一共八章: 第一章深度学习中的Python基础。主要讲解了深度学习将要用到的python的基础知识以及简单介绍了numpy库和matpoltlib库,本书编写深度学习神经网络代码仅使用Python和numpy库,不使用目前流行的各种深度学习框架,适合入门新手学习理论知识。 第二章感知机。主要介绍了神经网络和深度学习的基本单元感知机。感知机接收多个输入,产生一个输出,单层感知器可以实现与门,或门以及与非门,但是不能实现异或门,异或门的实现需要借助多层感知机,这也就是说,单层感知机只能表示线性空间,而非线性空间的表示需要借助多层感知机。 第三章神经网络——基于n
资源推荐
资源详情
资源评论
第四章神经网络的学习算法第四章神经网络的学习算法——随机梯度下降随机梯度下降numpy代码详解代码详解
本专栏是书《深度学习入门》的阅读笔记一共八章:
第一章深度学习中的Python基础。主要讲解了深度学习将要用到的python的基础知识以及简单介绍了numpy库和matpoltlib
库,本书编写深度学习神经网络代码仅使用Python和numpy库,不使用目前流行的各种深度学习框架,适合入门新手学习理
论知识。
第二章感知机。主要介绍了神经网络和深度学习的基本单元感知机。感知机接收多个输入,产生一个输出,单层感知器可以实
现与门,或门以及与非门,但是不能实现异或门,异或门的实现需要借助多层感知机,这也就是说,单层感知机只能表示线性
空间,而非线性空间的表示需要借助多层感知机。
第三章神经网络——基于numpy的代码详解。主要讲解了神经网络的构成,神经网络中的激活函数,神经网络中层与层的矩阵
乘法,3层神经网络的代码,输出层的设计和批处理。
第四章神经网络的学习算法第四章神经网络的学习算法
这一章中将要引入损失函数的概念,神经网络学习的目的就是找到合适的权重和偏置使得网络的损失函数值达到最小。
4.1从数据中学习从数据中学习
从数据中学习是指,神经网络能够通过数据自动确定权重和偏置的值。传统的机器学习方法是,人先通过观察数据,找出
特征量(可以从输入数据中准确提取本质数据的转换器),然后再套用机器学习的算法对特征量进行学习。而神经网络深度学
习的算法不需要认为的干涉,是一种端到端(end-to-end)(端到端是指从一端到另一端,即从原始数据(输入)到目标结果
(输出))的学习方式。
4.2损失函数(损失函数(loss function))
损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的神经网络对测试数据在多大程度上不拟合,在多大程度上不一
致。
4.2.1均方误差函数(均方误差函数(mean squared error))
均方误差函数的数学表达式为: , 表示神经网络的输出, 表示标签数据,k表示数据的维数。在识
别手写数字的例子中, , 都是10维的。
用代码实现MSE函数为:
def mean_squard_error(y,t):
return 0.5*np.sum((y-t**2))
4.2.2交叉熵误差函数(交叉熵误差函数(cross entropy error))
交叉熵误差函数的数学表达式为: ,对于one-hot标签的数据而言,因为 只有一位数是1,其余都是0,
所以实际上计算的是对应标签中数字1的索引的输出的自然对数。用代码实现交叉熵误差函数为:
def cross_entropy_error(y,t):
delta=1e-7
return -np.sum(t*np.log(y+delta))
这里在计算np.log时,加上了一个微小值delta,是为了避免出现np.log(0)等于负无穷大-inf的情况。
4.2.3mini-batch学习方式学习方式
前面介绍的损失函数都是针对一个训练数据计算的损失函数值,但是神经网络的最终目标是使所有训练数据的损失函数值
最小,假如你有100个训练数据,那么要求这100个训练数据的损失函数值达到最小。实现起来也不难,只要把所有的数据的
损失函数值加起来就可以,以交叉熵误差函数为例,公式为: 。N表示一共有N个训练数据,可
以看到只是把所有训练数据的损失函数值相加再求平均即可。如果这样的话,有一个问题,如果N非常非常大的话,比如千
万,亿数量级,那么求所有训练数据的综合将会变得非常慢,所以我们提出mini-batch的学习方式,这种学习方式就是每次训
练都从所有的训练数据中随机选出一定数量的数据,作为一个mini-batch,用这个mini-batch的平均损失函数值来近似所有训
练数据的平均损失函数值,下面我们用代码来实现如何从训练数据中随机选取出mini-batch的数据:
train_size=x_train.shape[0] batch_size=100
batch_mask=np.random.choice(train_size,batch_size)#从train_size中随机选取batch_size个数,得到
#一个被选数据索引的数组
x_mask=x_train[batch_mask] t_mask=t_train[batch_mask]
资源评论
weixin_38616809
- 粉丝: 6
- 资源: 981
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功