文档章节

Logistic分类函数

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:27
字数 1288
阅读 4
收藏 0

这篇教程是翻译Peter Roelants写的神经网络教程,作者已经授权翻译,这是原文

该教程将介绍如何入门神经网络,一共包含五部分。你可以在以下链接找到完整内容。

Logistic分类函数


这部分教程将介绍两部分:

  • Logistic函数
  • 交叉熵损失函数

如果我们利用神经网络进行分类,对于二分类问题,t=1或者t=0,我们能在logistic回归中使用logistic函数。对于多分类问题,我们使用softmax函数来处理多项式logistic回归。本教程我们先解释有关logistic函数的知识,后续教程会介绍softmax函数的知识。

我们先导入教程需要使用的软件包。

from __future__ import print_function

import numpy as np
import matplotlib.pyplot as plt
Logistic函数

假设我们的目标是根据输入的z去预测分类t。概率方程P(t=1|z)表示输出y根据logisitc函数y=σ(z)得到的值。σ被定义为:


logistic函数

根据函数分类的概率t=1或者t=0,我们能得到以下公式:


概率方程

注意一下,其实z就是P(t=1|z)与P(t=0|z)的比值求对数。


比值比

logistic函数在下面的代码中logistic(z)实现,并且可视化了logistic函数。

# Define the logistic function
def logistic(z):
  return 1 / (1 + np.exp(-z))
# Plot the logistic function
z = 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()

logistic函数
Logistic函数求导

因为神经网络一般使用梯度下降来优化,所以我们需要先求出y对于z的倒数,即∂y/∂z可以表示为:


梯度推导

因为1−σ(z))=1−1/(1+e^−z)=e−z/(1+e^−z),所以我们又可以把上式简化为:


梯度推导

logistic_derivative(z)函数实现了Logistic函数的求导。

# Define the logistic function
def logistic_derivative(z):
  return logistic(z) * (1 - logistic(z))
# Plot the derivative of the logistic function
z = 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()

logistic函数的梯度
对于logistic函数的交叉熵损失函数

模型的输出结果y=σ(z)可以被表示为一个概率y,如果t=1,或者概率1-y,如果t=0。我们把这个记为P(t=1|z)=σ(z)=y

在神经网络中,对于给定的一组参数θ,我们可以使用最大似然估计来优化参数。参数θ将输入的样本转化成输入到Logistic函数中的参数z,即z = θ * x。最大似然估计可以写成:


最大似然估计

因为对于给定的参数θ,去产生tz,根据联合概率我们又能将似然函数L(θ|t,z)改写成P(t,z|θ)。由于P(A,B) = P(A|B) ∗ P(B),我们又可以简化联合概率:


联合概率

因为我们不关心有关z的概率,所以我们可以把原来的似然函数改写成:


似然函数

因为t服从伯努力分布,而且如果给定参数θ,那么P(t|z)=y就是一个确定的值,因此我们又可以改写概率方程:


概率方程

由于对数函数是单调递增函数,我们可以依此优化对数似然函数


似然函数

该函数的最大值和常规的似然函数的最大值一样,所以我们计算对数似然函数如下,


对数似然函数

我们最小化这个负对数似然函数,等价于最大化似然函数。一个典型的误差函数可以设计为如下交叉熵误差函数


交叉熵误差函数

这个函数可能看起来比较复杂,但是如果我们把它拆分开来看,就会比较简单。


交叉熵误差函数

从上式中我们可以发现,如果样本被正确分类,那么损失函数L(t,y)和负对数概率函数在表达式上面是一样的,即


损失函数和误差函数对比

因为t只能取值0或者1,所以我们能将L(t, y)写为:


对数概率函数

如果你要分析每一个训练数据,那么就是下式:


对数概率函数

另一个我们使用交叉熵函数的原因是,在简单Logistic回归中,交叉熵函数是一个凸损失函数,全局最小值很容易找到。

对于logistic函数的交叉熵损失函数的求导

对于损失函数∂ξ/∂y求导,计算如下:


损失函数求导

现在,我们对输入参数z进行求导将变得很容易。


参数求导

至此,完整求导完成。

完整代码,点击这里

本文转载自:http://www.jianshu.com/p/abc2acf092a3

共有 人打赏支持
AllenOR灵感
粉丝 11
博文 2635
码字总数 83001
作品 0
程序员
私信 提问
入门 | 从原理到应用:简述Logistic回归算法

  选自towardsdatascience   作者:Niklas Donges   机器之心编译   参与:乾树、李泽南      Logistic 回归是二分类任务中最常用的机器学习算法之一。它的设计思路简单,易于实...

机器之心
2018/05/14
0
0
机器学习-Logistic回归

简介 Logistic回归是机器学习中最常用最经典的分类方法之一,有的人称为逻辑回归或逻辑斯蒂回归。虽然它称为回归模型,但是却处理的是分类问题,这主要是因为它的本质是一个线性模型加上一个...

hiyoung
2018/10/28
0
0
机器学习之softmax函数

Softmax分类函数 这篇教程是翻译Peter Roelants写的神经网络教程,作者已经授权翻译,这是原文。 该教程将介绍如何入门神经网络,一共包含五部分。你可以在以下链接找到完整内容。 (一)神经...

qq_37634812
2017/12/07
0
0
(四)Logistic Regression

1 线性回归 回归就是对已知公式的未知参数进行估计。线性回归就是对于多维空间中的样本点,用特征的线性组合去拟合空间中点的分布和轨迹,比如已知公式是y=a∗x+b,未知参数是a和b,利用多真...

v7xyy
2018/08/26
0
0
【理论+案例实战】Python数据分析之逻辑回归(logistic regression)

逻辑回归是分类当中极为常用的手段,它属于概率型非线性回归,分为二分类和多分类的回归模型。对于二分类的logistic回归,因变量y只有“是”和“否”两个取值,记为1和0。假设在自变量x1,x2...

技术小能手
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript继承(二)——借用构造函数

JavaScript继承(一)——原型链中提出原型链继承的两个问题:一是原型的数据共享问题,二是创建子类型的实例时,不能向父类型的构造函数中传递参数。这两个问题的根源还是在于使用原型模式创...

Bob2100
8分钟前
0
0
day25:比较两个文件内容|杀进程|并发备份数据库|并发进程备份mysql库|监控全国CDN网站节点|

1、有两个文件 a.txt 和 b.txt,把 a.txt 中有的但 b.txt 中没有的行找出来,并写入列 c.txt,然后计算 c 的行数; 注释:比较两个文件两个文件不同,可以用的方法:diff md5sum grep -vf $1 $...

芬野de博客
23分钟前
0
0
抓包工具Charles

背景介绍 Charles是一款很实用,界面很友好(至少跟fiddler比起来),功能强大的抓包神器,因为它是基于 java 开发的,所以跨平台,Mac、Linux、Windows下都是可以使用的,并且在Android和i...

Jack088
24分钟前
0
0
徒手撸一个简单的RPC框架

徒手撸一个简单的RPC框架 之前在牛逼哄哄的 RPC 框架,底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化、动态...

不学无数的程序员
45分钟前
1
0
Java 面试题目最全集合1000+ 大放送,能答对70%就去BATJTMD试试~

2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ 以下是2...

mikechen优知
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部