神经网络基础篇:详解logistic 损失函数(Explanation of logistic regression cost function)
详解 logistic 损失函数
在本篇博客中,将给出一个简洁的证明来说明逻辑回归的损失函数为什么是这种形式。

回想一下,在逻辑回归中,需要预测的结果\(\hat{y}\),可以表示为\(\hat{y}=\sigma(w^{T}x+b)\),\(\sigma\)是熟悉的\(S\)型函数 \(\sigma(z)=\sigma(w^{T}x+b)=\frac{1}{1+e^{-z}}\) 。约定 \(\hat{y}=p(y=1|x)\) ,即算法的输出\(\hat{y}\) 是给定训练样本 \(x\) 条件下 \(y\) 等于1的概率。换句话说,如果\(y=1\),在给定训练样本 \(x\) 条件下\(y=\hat{y}\);反过来说,如果\(y=0\),在给定训练样本\(x\)条件下 \(y\) 等于1减去\(\hat{y}(y=1-\hat{y})\),因此,如果 \(\hat{y}\) 代表 \(y=1\) 的概率,那么\(1-\hat{y}\)就是 \(y=0\)的概率。接下来,就来分析这两个条件概率公式。

这两个条件概率公式定义形式为 \(p(y|x)\)并且代表了 \(y=0\) 或者 \(y=1\) 这两种情况,可以将这两个公式合并成一个公式。需要指出的是讨论的是二分类问题的损失函数,因此,\(y\)的取值只能是0或者1。上述的两个条件概率公式可以合并成如下公式:
\(p(y|x)={\hat{y}}^{y}{(1-\hat{y})}^{(1-y)}\)
接下来会解释为什么可以合并成这种形式的表达式:\((1-\hat{y})\)的\((1-y)\)次方这行表达式包含了上面的两个条件概率公式,现在来解释一下为什么。

第一种情况,假设 \(y=1\),由于\(y=1\),那么\({(\hat{y})}^{y}=\hat{y}\),因为 \(\hat{y}\)的1次方等于\(\hat{y}\),\(1-{(1-\hat{y})}^{(1-y)}\)的指数项\((1-y)\)等于0,由于任何数的0次方都是1,\(\hat{y}\)乘以1等于\(\hat{y}\)。因此当\(y=1\)时 \(p(y|x)=\hat{y}\)(图中绿色部分)。
第二种情况,当 \(y=0\) 时 \(p(y|x)\) 等于多少呢?
假设\(y=0\),\(\hat{y}\)的\(y\)次方就是 $$\hat{y}$$ 的0次方,任何数的0次方都等于1,因此 \(p(y|x)=1×{(1-\hat{y})}^{1-y}\) ,前面假设 \(y=0\) 因此\((1-y)\)就等于1,因此 \(p(y|x)=1×(1-\hat{y})\)。因此在这里当\(y=0\)时,\(p(y|x)=1-\hat{y}\)。这就是这个公式(第二个公式,图中紫色字体部分)的结果。
因此,刚才的推导表明 \(p(y|x)={\hat{y}}^{(y)}{(1-\hat{y})}^{(1-y)}\),就是 \(p(y|x)\) 的完整定义。由于 log 函数是严格单调递增的函数,最大化 \(log(p(y|x))\) 等价于最大化 \(p(y|x)\) 并且地计算 \(p(y|x)\) 的 log对数,就是计算 \(log({\hat{y}}^{(y)}{(1-\hat{y})}^{(1-y)})\) (其实就是将 \(p(y|x)\) 代入),通过对数函数化简为:
\(ylog\hat{y}+(1-y)log(1-\hat{y})\)
而这就是前面提到的损失函数的负数 \((-L(\hat{y},y))\) ,前面有一个负号的原因是当训练学习算法时需要算法输出值的概率是最大的(以最大的概率预测这个值),然而在逻辑回归中需要最小化损失函数,因此最小化损失函数与最大化条件概率的对数 \(log(p(y|x))\) 关联起来了,因此这就是单个训练样本的损失函数表达式。

在 \(m\)个训练样本的整个训练集中又该如何表示呢。
整个训练集中标签的概率,更正式地来写一下。假设所有的训练样本服从同一分布且相互独立,也即独立同分布的,所有这些样本的联合概率就是每个样本概率的乘积:
\(P\left(\text{labels in training set} \right) = \prod_{i =1}^{m}{P(y^{(i)}|x^{(i)})}\)。

如果想做最大似然估计,需要寻找一组参数,使得给定样本的观测值概率最大,但令这个概率最大化等价于令其对数最大化,在等式两边取对数:
\(logp\left( \text{labels in training set} \right) = log\prod_{i =1}^{m}{P(y^{(i)}|x^{(i)})} = \sum_{i = 1}^{m}{logP(y^{(i)}|x^{(i)})} = \sum_{i =1}^{m}{- L(\hat y^{(i)},y^{(i)})}\)
在统计学里面,有一个方法叫做最大似然估计,即求出一组参数,使这个式子取最大值,也就是说,使得这个式子取最大值,\(\sum_{i= 1}^{m}{- L(\hat y^{(i)},y^{(i)})}\),可以将负号移到求和符号的外面,\(- \sum_{i =1}^{m}{L(\hat y^{(i)},y^{(i)})}\),这样就推导出了前面给出的logistic回归的成本函数\(J(w,b)= \sum_{i = 1}^{m}{L(\hat y^{(i)},y^{\hat( i)})}\)。

由于训练模型时,目标是让成本函数最小化,所以不是直接用最大似然概率,要去掉这里的负号,最后为了方便,可以对成本函数进行适当的缩放,就在前面加一个额外的常数因子\(\frac{1}{m}\),即:\(J(w,b)= \frac{1}{m}\sum_{i = 1}^{m}{L(\hat y^{(i)},y^{(i)})}\)。
总结一下,为了最小化成本函数\(J(w,b)\),从logistic回归模型的最大似然估计的角度出发,假设训练集中的样本都是独立同分布的条件下。
神经网络基础篇:详解logistic 损失函数(Explanation of logistic regression cost function)的更多相关文章
- JavaScript基础篇详解
全部的数据类型: 基本数据类型: undefined Number Boolean null String 复杂数据类型: object ①Undefined: >>>声明但未初始化 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- I2C 基础原理详解
今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- RabbitMQ基础知识详解
什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Nmap扫描教程之基础扫描详解
Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...
随机推荐
- Windows11如何设置经典的右键菜单
使用Windows11几个月了,解决了我的电脑经常性彻底死机.蓝屏的问题,系统也流畅.易用了好多.唯一不能忍受的是右键菜单,经常需要再点一次才能找到自己想要的选项,今天网搜了下解决办法,特记录于此. ...
- Webpack DevServer 代理本地静态目录
前言 项目里需要离线切片地图,但切片地图文件很多,需求上有时无法单独提供一个独立的文件服务器或者切片服务器,放在 public 难免会在调试运行时被复制到 DevServer 上,而这个操作在低层级少 ...
- Python+SVM
# !/usr/bin/env python # encoding: utf-8 # SVM算法 支持向量机 from sklearn import svm import numpy as np fr ...
- HTML5学习内容-3
(一)行高 line-height,一行文字的高度 例子 <!DOCTYPE html> <html lang="en"> <head> < ...
- MySQL查看数据库性能常用命令和实战教学
MySQL查看数据库性能常用命令 # 列出MySQL服务器运行各种状态值 show global status; # 查询MySQL服务器配置信息语句 show variables; # 慢查询 sh ...
- DDD技术方案落地实践
1. 引言 从接触领域驱动设计的初学阶段,到实现一个旧系统改造到DDD模型,再到按DDD规范落地的3个的项目.对于领域驱动模型设计研发,从开始的各种疑惑到吸收各种先进的理念,目前在技术实施这一块已经基 ...
- CSP2023游击
Day-1 上车了,玩了一路. 到酒店里,玩了一晚上. Day 1 爆O! Day 2 走了,玩了一路. AF0了, 哎不是,谁给我反对了 考完了,心情不是很好 分数就不说出来了吧,太低了怕你们笑话我 ...
- easyupload
打开界面就是一个文件上传 的界面 然后在bp试了很多种方法都没有成功,还是看了wp 这里需要利用到.use.ini那为什么不用.heaccess?好像这种方法被过滤了,当时我用的时候没有成功 这里的话 ...
- 在vue中如何使用echart
1.在前面基础上搭建好vue环境,初始化webpack后,在终端使用npm i echarts -s 下载echart 2.下载完成后全局使用echart 在main.js文件中导入 import e ...
- Lyndon 分解
介绍 [模板]Lyndon 分解 #include<cstdio> #include<cstring> char s[5000005]; int main(){ scanf(& ...