神经网络的交叉熵损失函数

常见损失函数

  • 0-1损失函数
    L(Y,f(X))={1,0Y != f(X)Y = f(X)
  • 平方损失函数
    L(Y,f(X))=(Y−f(X))2
  • 绝对损失函数L(Y,f(X))=|(Y−f(X))|
  • 对数损失函数L(Y,P(Y|X))=−logP(Y|X)

常见的损失函数包含以上几个。

平方损失函数

在神经网络中样本的平方损失函数一般会定义为:
Ed=12∑i(zi−yi)2,方便求导后约掉系数。

使用误差逆传播训练神经网络时会使用梯度下降法来更新每个神经网络中的权重,
根据链式求导法可以得到权重更新公式,

∂Ed∂wji=∂Ed∂nodej∂nodej∂wji=∂Ed∂nodej∂∑iwjixji∂wji=∂Ed∂nodejxji

此时对于输出层,权重更新公式为

∂Ed∂wji=∂Ed∂yj∂yj∂nodejxji

sigmoid激活函数

如果神经元使用sigmoid激活函数,即y=11+e−z
,函数图如下,

则梯度下降法更新权重时,会涉及到sigmoid函数的导数,这个导数的形状大致如下:

可以看到导数两边的值基本都接近0,也就是说两边的斜率很平缓,两边的点在使用梯度下降时下降很缓慢,可能会影响训练最终效果。

交叉熵损失函数

针对以上不足,有两个方向来避免,一是从激活函数下手,一个是从损失函数下手。这里我们不换激活函数,还是用sigmoid函数,于是引入了交叉熵损失函数。

L=∑i[zilnyi+(1−zi)ln(1−yi)]

这时再看权重更新公式,

∂L∂wji=∂L∂nodej∂nodej∂wji=∂L∂nodej∂∑iwjixji∂wji=∂L∂nodejxji

此时对于输出层,权重更新公式为

∂L∂wji=∂L∂yj∂yj∂nodejxji=xji(zj−yj)

可以看到梯度下降已经不与sigmoid的导数相关了,而是由误差来影响,当误差较大时则下降较快,让梯度下降法更有效率,避免了训练慢的问题。

以下是广告相关阅读

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

相关阅读:
机器学习之神经网络

欢迎关注:

时间: 2024-08-01 01:17:36

神经网络的交叉熵损失函数的相关文章

归一化(softmax)、信息熵、交叉熵

机器学习中经常遇到这几个概念,用大白话解释一下: 一.归一化 把几个数量级不同的数据,放在一起比较(或者画在一个数轴上),比如:一条河的长度几千甚至上万km,与一个人的高度1.7m,放在一起,人的高度几乎可以被忽略,所以为了方便比较,缩小他们的差距,但又能看出二者的大小关系,可以找一个方法进行转换. 另外,在多分类预测时,比如:一张图,要预测它是猫,或是狗,或是人,或是其它什么,每个分类都有一个预测的概率,比如是猫的概率是0.7,狗的概率是0.1,人的概率是0.2... , 概率通常是0到1之间

交叉熵代价函数定义及其求导推导(读书笔记)

目的:为了解决学习缓慢的问题 神经元的输出就是 a = σ(z),其中z=∑wjij+b是输⼊的带权和. C=−1n∑[ylna+(1−y)ln(1−a)] 其中 n 是训练数据的总数,求和是在所有的训练输⼊ x 上进⾏的, y 是对应的⽬标输出. 表达式是否解决学习缓慢的问题并不明显.实际上,甚⾄将这个定义看做是代价函数也不是显⽽易⻅的!在解决学习缓慢前,我们来看看交叉熵为何能够解释成⼀个代价函数. 将交叉熵看做是代价函数有两点原因. 第⼀,它是⾮负的, C > 0.可以看出:式子中的求和中的

LSTM神经网络

LSTM是什么 LSTM即Long Short Memory Network,长短时记忆网络.它其实是属于RNN的一种变种,可以说它是为了克服RNN无法很好处理远距离依赖而提出的. 我们说RNN不能处理距离较远的序列是因为训练时很有可能会出现梯度消失,即通过下面的公式训练时很可能会发生指数缩小,让RNN失去了对较远时刻的感知能力. ∂E∂W=∑t∂Et∂W=∑tk=0∂Et∂nett∂nett∂st(∏tj=k+1∂st∂sk)∂sk∂W 解决思路 RNN梯度消失不应该是由我们学习怎么去避免,而

我的2017年文章汇总——机器学习篇

2018,你跟自己做了约定了吗?为了遇见更好的自己. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:"分布式"."机器学习"."深度学习"."NLP"."Java深度"."Java并发核心"."JDK源码"."Tomcat内核". 本篇推送机器学习相关文章. 强化学习 机器学习之条件随机场(CRF) 隐马尔可夫模型的Viterbi解码算

神经网络基础知识笔记

神经网络表示 神经元模型 神经网络从大脑的工作原理得到启发,可用于解决通用的学习问题.神经网络的基本组成单元是神经元(neuron).每个神经元具有一个轴突和多个树突.每个连接到本神经元的树突都是一个输入,当所有输入树突的兴奋水平之和超过某一阈值,神经元就会被激活.激活的神经元会沿着其轴突发射信号,轴突分出数以万计的树突连接至其他神经元,并将本神经元的输出并作为其他神经元的输入.数学上,神经元可以用感知机的模型表示. 一个神经元的数学模型主要包括以下内容: 名称 符号 说明 输入 (input)

如何用人工神经网络处理决策边界问题?这里有一份简单的代码参考

从本质上说,人工神经网络(ANN)是一种信息处理的范式,它受到人脑信息处理流程的启发,目前在机器学习领域得到了非常广泛的应用. 然而,可能许多人并不知道的是,ANN 早在 40 年代就被提出了.在最初的那几年,ANN 曾在一定程度上引起了业界的关注,但由于那时没有当前强大的硬件运算能力和高效的模型训练算法,因此ANN很快就销声匿迹了.但随着时代的进步,技术的发展,目前 ANN 几乎成了人工智能的代名词,特别是随着自动编码器.卷积网络.Dropout 正则化(dropout regularizat

[译] Scratch 平台的神经网络实现(R 语言)

本文讲的是[译] Scratch 平台的神经网络实现(R 语言), 原文地址:Neural Networks from Scratch (in R) 原文作者:Ilia Karmanov 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:CACppuccino 校对者:Isvih Scratch 平台的神经网络实现(R 语言) 这篇文章是针对那些有统计或者经济学背景的人们,帮助他们通过 R 语言上的 Scratch 平台更好地学习和理解机器学习知识. A

Yann LeCun的“层级损失函数”:牧羊犬和摩天大楼,哪个更像哈巴狗?

近期Yann LeCun的新作<Hierarchical loss for classification>已经放在了arXiv上,联合作者为Facebook人工智能研究院的Cinna Wu和 Mark Tygert. 在这篇文章中,作者认为在分类任务中,一般的神经网络模型(例如LeCun, Bengio 和 Hinton等人2015年中的模型,其他研究的模型也大多基于此展开的)很少会考虑到类型之间的亲疏关系,例如这些模型的分类学习过程中并没有考虑牧羊犬事实上比摩天大楼更像哈巴狗.在文章中,作者

Keras多GPU训练指南

更多深度文章,请关注:https://yq.aliyun.com/cloud Keras是我最喜欢的Python深度学习框架,特别是在图像分类领域.我在很多地方都使用到了Keras,包括生产系统.我自己的深度学习项目,以及PyImageSearch博客. 我的新书"基于Keras的深度学习计算机视觉"有三分之二的篇幅都跟这个框架有关.然而,在该框架过程中遇到的最大的一个问题就是执行多GPU训练. 但是,这个问题将不复存在! 随着Keras(v2.0.8)最新版本的发布,使用多GPU 训