神经网络的学习(训练):损失函数(均方误差、交叉熵误差)

1 神经网络学习(训练)步骤

    初始化权值和偏置参数——1 从总训练集抽取一批数据——2 前向传播计算损失、反向传播由损失计算各参数的梯度——3 利用梯度更新参数——4 重复1、2、3

2 神经网络:端对端的机器学习(从输入到输出);所有问题都可用统一的流程完成
3 损失函数:神经网络学习参数时的指标,使得损失函数最小的参数即为最优参数;损失函数一般用均方误差和交叉熵误差
4 均方误差(mean square error):E=1/2Σ(yk-tk)²;python实现:1/2*np.sum((yk-tk)**2);k为维数,
t为监督数据(训练数据),y为输出值;one-hot表示的话,正确解的标签为1
5 交叉熵误差(cross entropy error):E=-Σtk*log yk;log以e为底,y,t同上,t为one-hot标签形式时,正确解的标签为1
6 梯度:简单来说就是各个变量的偏导数组成的向量,梯度表示各点处函数值减小最多的方向,寻找最小值的梯度法为梯度下降法
表示为:x=x-η*grad;η为学习率,grad为梯度

 均方误差(mean square error)

#均方误差损失
def mean_square_error(y,t):
    return 1/2*np.sum((y-t)**2)

交叉熵误差(cross entropy error)

#交叉熵误差损失
def cross_entropy_error(y,t):
    delta=1e-7 #微小值,防止出现log(0)无穷小
    return -np.sum(t*np.log(y+delta))
#mini_bach版交叉熵,可用于one-hot或者非one-hot标签形式
def mini_bach_cross_entropy_error(y,t):
    #输入单个数据
    if y.ndim==1:
        t=t.reshape(1,t.size)
        y=y.reshape(1,y.size)
        
    #标签为one-hot时正确解标签为1,忽略为0的值,返回最大值标签的索引,one-hot时y.size=t.size=batch_size*class_num;class_num为分类的数目
    if y.size==t.size:
        t=t.argmax(t,axis=1) #返回第1轴(行)方向最大值的索引组成的一维数组
    batch_size=y.shape[0]
    
    return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size #y[np.arange(batch_size),t]为索引访问y[a,b]位置的y的值

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲冲冲@chong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值