(译)神经网络基础(1):Logistic 回归
来源:互联网 发布:农村淘宝怎么买东西 编辑:程序博客网 时间:2024/06/06 00:02
点击阅读原文
翻译: huangyongye
前言:本文在翻译过程中,为了便于理解,某些句子可能和原文有一定的出入。但是整体上没有太大的改动,由于本人水平有限,翻译或者理解不对的地方,欢迎指正,不胜感激。
Logistic 回归
本例子包括以下内容:
* logistic sigmoid 函数(以下称:logistic 函数)
* 交叉熵(Cross-entropy)损失函数
在分类问题中,我们希望神经网络最后输出每个类别的概率分布
首先导入相关的 Python 库函数。
# Python importsimport numpy as np # Matrix and vector computation packageimport matplotlib.pyplot as plt # Plotting library# Allow matplotlib to plot inside this notebook%matplotlib inline
1. Logistic 函数
符号说明如下(此为译者添加):
-x 为输入样本原始特征
-z 为 logisitc 函数的输入(一般z=wT∗x )
-y 为 logisitc 函数的输出(预测类别 1 的概率)
-t 样本的真实类别(tϵ{0,1} )
我们的目标是对于输入的
logistic sigmoid 函数,在 Python 中通过下面的 logistic(z)
函数来实现,输入
给定输入
现在考虑logistic回归模型的特点,一个事件的几率(odds ratio)是指该事件发生的概率与该事件不发生的概率的比值。如果该事件发生的概率为
那么,logistic 的对数几率为:
这就是说,在logistic 回归模型中,输出类别
# Define the logistic functiondef logistic(z): return 1 / (1 + np.exp(-z))
# Plot the logistic functionz = np.linspace(-6,6,100)plt.plot(z, logistic(z), 'b-')plt.xlabel('$z$', fontsize=15)plt.ylabel('$\sigma(z)$', fontsize=15)plt.title('logistic function')plt.grid()plt.show()
2. logistic 函数求导
在神经网络中,通常使用求梯度的方法来优化模型,比如梯度下降。所以,输出
由于
这个求导的过程通过下面的函数 logistic_derivative(z)
实现。
# Define the logistic functiondef logistic_derivative(z): return logistic(z) * (1 - logistic(z))
# Plot the derivative of the logistic functionz = np.linspace(-6,6,100)plt.plot(z, logistic_derivative(z), 'r-')plt.xlabel('$z$', fontsize=15)plt.ylabel('$\\frac{\\partial \\sigma(z)}{\\partial z}$', fontsize=15)plt.title('derivative of the logistic function')plt.grid()plt.show()
3. logistic 函数的交叉熵(Cross-entropy)损失函数
在二分类问题中,我们可以把上述模型输出
在神经网络模型中,对于给定参数集
根据似然函数的定义,
由于我们并不需要关心
因为
我们知道,对数函数是单调递增的,所以可以通过优化对数似然函数
在优化问题中,我们更加喜欢求解最小值,所以可以对上式最大化问题通过取负转化为最小化问题。这样就得到了模型的损失函数
这个函数看起来貌似很复杂,除了之前的推导,这里边其实有些比较直观的理解能够告诉我们为什么是用它来作为 logistic 回归的损失函数。首先上式可以写成下面形式:
对于样本的真实类别
可以发现,将
通过最小化负的对数概率,等价于最大化正的对数概率。由于
若把
在logistic 回归中,我们使用交叉熵损失的另外一个原因是因为它是一个凸函数 , 这样我们就能够求解它的最小值(但是注意,并不是所有的损失函数都要满足凸函数的条件)。
4. logistic 函数的交叉熵(Cross-entropy)损失函数求导
交叉熵损失函数对输入进行求导
在上文中,我们已经知道
This post at peterroelants.github.io is generated from an IPython notebook file. Link to the full IPython notebook file
5. 译者补充理解
5.1 似然函数
在统计学定义中,似然函数是一种关于统计模型参数的函数。给定样本输出
从直观上来理解,“极大化似然法”意味着通过调整参数(也就是修改模型),使得最后训练好的模型能够以最大的可能性生成我们喂给它的训练样本。令每一个样本属于其真实标记的概率越大越好。
5.2 交叉熵损失函数
(参考《西瓜书的 414 页》)
交叉熵是一种信息论的概念。首先从 KL 散度说起。
KL 散度,又叫 KL 距离 或者 相对熵,可用于度量两个概率分布之间的差异。给定两个分布
其中
其中,
若我们把
所以,从直观上来理解,最小化交叉熵函数,意味着通过调整参数(也就是修改模型),使得最后训练好的模型生成的数据分布和真实数据的分布越接近越好。
所以说,最大化似然函数和最小化交叉熵损失函数在物理意义上也是一致的,目的都是优化我们的模型,使它所产生的数据和真实数据尽可能的相似,也就是说,对于输入特征,模型输出的结果应该和真实标记尽可能相同。
- (译)神经网络基础(1):Logistic 回归
- 神经网络入门之Logistic回归(分类问题)
- 线性回归(logistic回归)
- logistic回归(一)
- logistic 回归(二)
- Logistic 回归浅析()
- 逻辑(logistic)回归
- Logistic 回归(目标、)
- 逻辑回归(Logistic)
- logistic回归深入篇(1)
- Logistic回归----Matlab/Python(1)
- logistic分类(logistic回归 LR)
- 机器学习基础(三)Logistic回归模型
- Logistic回归基础
- Logistic回归(一)分类
- 逻辑回归(logistic regression)
- logistic回归(机器学习)
- 逻辑回归(Logistic Regression)
- Ubuntu下多版本JDK切换
- fifo实例编程
- DAO
- Highchart中如何引入资源包
- Ceph BackoffThrottle分析
- (译)神经网络基础(1):Logistic 回归
- 网络编程—TCP三次握手四次挥手的理解
- java对象转js对象
- 本地nodejs服务(笔记)
- 查找算法的时间复杂度
- 12th湖南省赛 A-2016(同余定理)
- NDk的初使用
- Html中typeof的用法
- improve your python code(8)