1. sigmoid函数:σ(z) = 1/(1+e^(-z))

sigmoid函数有个性质:σ'(z) =σ(z) * ( 1 - σ(z) )

sigmoid函数一般是作为每层的激活函数,而下边的几种是代价函数。

2. 所有样本的二次代价函数:C=1/2 *Σ (y - a)^2,这里的激活函数也使用了sigmoid函数

二次代价函数存在当结果明显错误时,学习却很慢的问题,如,当输出趋近于1,而标签为0时候,即出现明显错误时,其导数却趋近于0,使得学习反而很慢。注意:sigmoid函数的输出在(0,1),而输入却在(负无穷,正无穷)。

3.  交叉熵适用于二分类和多分类的代价函数,它改进了二次代价函数的缺点。交叉熵对梯度的更新不需要对sigmoid函数求导,权重的学习速度只受到 σ(z)-y 的控制,即输出与标签的误差的控制,而与sigmoid函数的导数无关。

logistic成本函数:J(w,b)=-1/m *Σ[y(i)log(a(i))+(1-y(i))log(1-a(i))],即对m个样本求和后再平均,Σ是求和符号 ,i是第i个样本 
softmax成本函数:J(w,b)=-1/m *ΣΣ1{ y^(i)} *log exp(z)/Σexp(z),其中第一个求和符是对(i=1~m),第二个求和符是对(j=1~k),
最后一个分母上的求和符是对k输出神经元的exp(z)求和。

https://blog.csdn.net/u014313009/article/details/51045303

  • 交叉熵中的a激活值必须是由sigmoid函数得到的,因为1- a,所以a必须在0~1之间,一般只有sigmoid函数才会得到(0,1)之间的值。别想tanh,tanh的范围在(-1,1)之间。
  • 单输出神经元的所有样本的代价函数:C = -1/n*Σ[y * lna + ( 1 - y)*ln( 1 - a ) ) ]

4. logistic回归的代价函数就是交叉熵

P( Y=1|x ) = e^(wx+b)/(1+e^-(wx+b) )        -----定义

=1/(1+e^-(wx+b) ),即sigmoid函数。

P( Y=0|x ) = 1/(1+e^(wx+b) )

其中,P( Y=1|x )+P( Y=0|x )=0;并且P( Y=1|x )表示给定输入特征x,求Y=1时的概率。至于到底这两个式子可否交换,我个人觉得是不可以的,因为0和1是标签,这里涉及到使用交叉熵的问题,因为交叉熵会用到标签0和1,如果交换的话交叉熵式子也需要变化一下,所以就别乱写了,按照规定的写就行。

logistic回归【比较】这两个条件概率值的大小,将给定的输入实例(或输入特征)分到概率值较大的那一类。

  • 讲解logistic回归时候,用到了似然函数推出交叉熵。
  • 统计学中,似然函数是一种关于统计模型参数的函数。给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率:L(θ|x)=P(X=x|θ)。看不懂似然函数就跳过吧,真混乱。
  • 因此,似然函数为L(x|y)=P(Y=y|x),似然函数就是分类为1和分类为0的各个样本的概率之积。可看课本统计学习方法P79。

5. softmax函数是用于多分类,且该函数一般用在最后一层,即输出层,并且不是使用sigmoid函数来获得输出。前面的激活函数用不用sigmoid函数不作要求。

a=e^(z) / ( Σ e^(z) )

输出的激活值加起来正好为1。

对于多分类问题,例如我们的年龄分为5类,并且人工编码为0、1、2、3、4,因为输出值是5维的特征,因此我们需要人工做onehot encoding分别编码为00001、00010、00100、01000、10000,才可以作为这个函数的输入。理论上我们不做onehot encoding也可以,做成和为1的概率分布也可以,但需要保证是和为1。

6.重点来了

cs231n讲的softmax的交叉熵损失函数是: 一个样本的loss = - log(p),其中p是预测的正确类别的概率。那么所有样本的

loss = -1/m*Σlog(p),  对所有样本求和后取平均。

这和第3条讲的一个道理,不冲突。

下面再重新复述以便第三条:

【【【

softmax成本函数:

J(w,b)=-1/m *ΣΣ1{ y^(i)} *log exp(z)/Σexp(z),其中第一个求和符是对(i=1~m),第二个求和符是对(j=1~k),
最后一个分母上的求和符是对k输出神经元的exp(z)求和。

】】】

解析:Σ1{ y^(i)} *log exp(z)/Σexp(z)就是log(p),其中p是预测的正确类别的概率。因为样本正确类别的标签为1,不正确类别的标签都为0,说到底就是Σ1{ y^(i)} *log exp(z)/Σexp(z)只有一项不为0,其余各项都为0,因为正确类别只有一个。

因此softmax的交叉熵损失函数可以写作:loss = -1/m*Σlog(p),  对所有样本求和后取平均,p是预测的正确类别的概率,简单明了

下面再说说logistic的交叉熵损失函数:J(w,b)=-1/m *Σ[y(i)log(a(i))+(1-y(i))log(1-a(i))],i是第i个样本

我觉得写成J(w,b)=-1/m *Σ[y(i)log(p(i))+(1-y(i))log(1-p(i))]更合适,i是第i个样本 ,y(i)表示第i个样本的标签,是标签,不是预测值。

其实logistic和softmax的交叉熵损失函数一个原理:可想象成logistic的输出有两个神经元(因为是二分类)。对于某个样本,其logistic交叉熵损失函数为 - y*log(p),p表示正确类别的概率。

因为二分类只有两个类别,所以两个标签分别为1和0,但是并不表示正确类别的标签为1,错误类别的标签为0,因为每个样本的标签也可以是1,也可以是0。

假如正确类别为0(即标签为0),预测为0(即预测正确)的概率为p,则损失为-log(p),而在logistic中规定了p(y=1|x)为p(i),

p(y=0|x) 为1-p(i),这里的1-p(i)就是预测正确的概率p.

假如正确类别为1(即标签为1),预测为1(即预测正确)的概率为p,则损失为-log(p),而在logistic中规定了p(y=1|x)为p(i),

p(y=0|x) 为1-p(i),这里的p(i)就是预测正确的概率p.

因此logistci的交叉熵损失函数J(w,b)=-1/m *Σ[y(i)log(p(i)) + (1-y(i))log(1-p(i))]   和softmax的交叉熵损失函数 loss= -1/m*Σlog(p)都是一个原理,即 - log(正确类别的概率)

softmax和logistic的用法上的不同在于:

logistic相当于只有输入层、单隐层神经元,和两个神经元的输出层,即结构特别简单,输入直接和权重相乘之后,加上偏置,再进行sigmoid激活函数激活,就得到了输出层的两个概率值,分别表示两个类别的概率。

而softmax通常用在多层神经网络的的最后一层,中间经过了多次运算和激活,最后的类别不止两类。

【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax相关推荐

  1. 深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  2. 花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)

    目录 0. 前言 1. ReLU 整流线性单元 2. 绝对值整流线性单元 3. 渗漏整流线性单元 4. 参数化整流线性单元 5. maxout 单元 6. logistic sigmoid 单元 7. ...

  3. 深度学习中常用的代价函数

    1.二次代价函数(quadratic cost): 其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数.为简单起见,使用一个样 本为例进行说明,此时二次代价函数为: 假如我 ...

  4. 深度学习技巧应用7-K折交叉验证的实践操作

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用7-K折交叉验证的实践操作.K折交叉验证是一种机器学习中常用的模型验证和选择方式,它可以将数据集分为K个互斥的子集,其中K-1个子集作为训练集, ...

  5. 语义分割:基于openCV和深度学习(二)

    语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...

  6. 用MXnet实战深度学习之二:Neural art

    用MXnet实战深度学习之二:Neural art - 推酷 题注:本来这是第三集的内容,但是 Eric Xie 勤劳又机智的修复了mxnet和cuDNN的协作问题,我就把这篇当作一个卷积网络Conv ...

  7. 花书+吴恩达深度学习(二九)生成随机网络 GSN

    文章目录 0. 前言 1. 生成随机网络 GSN 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 花书+吴恩达深度学习(二七)深度生成模型之玻尔兹曼机及其变体(RBM, DB ...

  8. 花书+吴恩达深度学习(二六)近似推断(EM, 变分推断)

    文章目录 0. 前言 1. 将推断视为优化问题 1.1 期望最大化 EM 1.2 最大后验推断 MAP 1.3 稀疏编码 2. 变分推断 2.1 离散型潜变量 2.2 连续性潜变量 如果这篇文章对你有 ...

  9. 花书+吴恩达深度学习(二五)直面配分函数(CD, SML, SM, RM, NCE)

    文章目录 0. 前言 1. 对数似然梯度 1.1 朴素 MCMC 算法 1.2 对比散度算法 CD 1.3 随机最大似然 SML 2. 伪似然 3. 得分匹配 SM 4. 比率匹配 RM 5. 去噪得 ...

最新文章

  1. 《Linux内核设计与实现》读书笔记(三)- Linux的进程
  2. Java8 - 使用CompletableFuture 构建异步应用
  3. 【机器学习】中国大学慕课《机器学习》课后习题(二)(回归)
  4. tomcat(7)日志记录器
  5. php curl cookie,php中curl获取返回页面的cookie
  6. debian 7 mysql_debian7.2+nginx+mysql
  7. CentOS设置时间
  8. android 可拖拽View的简单实现
  9. 水晶报表的使用经验和资料总结
  10. mybatis插件的执行顺序
  11. C#——绘制箭头的方法
  12. 《数据库原理与应用》学习笔记(一):概论
  13. html手机保存图片不显示,手机保存的图片在相册显示不了解决方法
  14. 润乾打印控制解决方案
  15. iphone/ipad网站开发技巧整理
  16. 几道特别难搞的数据库面试题
  17. Python实现BOA蝴蝶优化算法优化支持向量机回归模型(SVR算法)项目实战
  18. python中set option_pd.set_option
  19. 客户端跟服务器通讯如何选择协议,客户端怎么和服务器通信协议
  20. 经典软件工程师面试题

热门文章

  1. spring boot多数据源配置(mysql,redis,mongodb)实战
  2. JMeter使用碰到的问题
  3. 元宇宙iwemeta: 北交所开创,资本市场服务创新型中小企业掀开新篇章,上市企业小盘点
  4. Linux服务器Zookeeper+Dubbo环境搭建
  5. dashujufenxi:全球企业将遭受20万亿美元损失 年底杠杆率升至90年代水平
  6. 【深度学习看手相】台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 【新智元导读】本周日带来一个有
  7. linux安装python库报错pywin32,Linux windows安装paramiko模块
  8. [Linux]搜索文件是否包含指定内容并返回文件名
  9. [搜索]一种改进的召回率准确率公式计算方式
  10. jvm性能调优实战 - 43OOM内存溢出发生的原因及可能发生OOM的内存区域