神经网络系列之五 -- 线性二分类的方法与原理

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力。

第6章 多入单出的单层神经网路

6.0 线性二分类

6.0.1 提出问题

我们经常看到中国象棋棋盘中,用楚河汉界分割开了两个阵营的棋子。回忆历史,公元前206年前后,楚汉相争,当时刘邦和项羽麾下的城池,在中原地区的地理位置示意图如图6-1所示,部分样本数据如表6-1所示。

图6-1 样本数据可视化

  1. 红色圆点,楚,项羽的城池
  2. 绿色叉子,汉,刘邦的城池

表6-1 样本数据抽样

样本序号 X1:经度相对值 X2:纬度相对值 Y:1=汉, 0=楚
1 0.325 0.888 1
2 0.656 0.629 0
3 0.151 0.101 1
4 0.785 0.024 0
... ... ... ...
200 0.631 0.001 0

我们在上一章学习了特征归一化的方法。在本例中,中原地区的经纬度坐标其实应该是一个两位数以上的实数,比如(35.234, -122.455)。为了简化问题,我们已经把它们归一化到[0,1]之间了。

问题:

  1. 经纬度相对坐标值为(0.58,0.92)时,属于楚还是汉?
  2. 经纬度相对坐标值为(0.62,0.55)时,属于楚还是汉?
  3. 经纬度相对坐标值为(0.39,0.29)时,属于楚还是汉?

读者可能会觉得这个太简单了,这不是有图吗?定位坐标值后在图上一比划,一下子就能找到对应的区域了。但是我们要求用机器学习的方法来解决这个看似简单的问题,以便将来的预测行为是快速准确的,而不是拿个尺子在图上去比划。

另外,本着用简单的例子说明复杂的原理的原则,我们用这个看似简单的例子,是想让读者对问题和解决方法都有一个视觉上的清晰认识,而这类可以可视化的问题,在实际生产环境中并不多见。

6.0.2 逻辑回归模型

回归问题可以分为两类:线性回归和逻辑回归。在第二步中,我们学习了线性回归模型,在第三步中,我们将一起学习逻辑回归模型。

逻辑回归的英文是Logistic Regression,逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。

回忆线性回归,使用一条直线拟合样本数据,而逻辑回归是“拟合”0或1两个数值,而不是具体的连续数值,所以它叫广义线性模型。逻辑回归又称logistic回归分析,常用于数据挖掘,疾病自动诊断,经济预测等领域。

例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。因此因变量就为是否胃癌,值为“是”或“否”;自变量就可以包括很多了,如年龄、性别、饮食习惯、幽门螺杆菌感染等。

自变量既可以是连续的,也可以是分类的。然后通过logistic回归分析,可以得到自变量的权重,从而可以大致了解到底哪些因素是胃癌的危险因素。同时根据该权值可以根据危险因素预测一个人患癌症的可能性。

逻辑回归的另外一个名字叫做分类器,分为线性分类器和非线性分类器,本章中我们学习线性分类器。而无论是线性还是非线性分类器,又分为两种:二分类问题和多分类问题,在本章中我们学习二分类问题。线性多分类问题将会在下一章讲述,非线性分类问题在后续的步骤中讲述。

综上所述,我们本章要学习的路径是:回归问题->逻辑回归问题->线性逻辑回归即分类问题->线性二分类问题。

表6-2示意说明了线性二分类和非线性二分类的区别。

表6-2 直观理解线性二分类与非线性二分类的区别

线性二分类 非线性二分类
www.wityx.com www.wityx.com

我们先学习如何解决线性二分类为标题,在此基础上可以扩展为非线性二分类问题。

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力。

6.1 二分类函数

此函数对线性和非线性二分类都适用。

6.1.1 二分类函数

对率函数Logistic Function,即可以做为激活函数使用,又可以当作二分类函数使用。而在很多不太正规的文字材料中,把这两个概念混用了,比如下面这个说法:“我们在最后使用Sigmoid激活函数来做二分类”,这是不恰当的。在本书中,我们会根据不同的任务区分激活函数和分类函数这两个概念,在二分类任务中,叫做Logistic函数,而在作为激活函数时,叫做Sigmoid函数。

  • 公式

\[Logistic(z) = \frac{1}{1 + e^{-z}} \rightarrow a\]

  • 导数

\[Logistic'(z) = a(1 - a)\]

具体求导过程可以参考8.1节。

  • 输入值域

\[(-\infty, \infty)\]

  • 输出值域

\[(0,1)\]

  • 函数图像(图6-2)

图6-2 Logistic函数图像

  • 使用方式

此函数实际上是一个概率计算,它把\((-\infty, \infty)\)之间的任何数字都压缩到\((0,1)\)之间,返回一个概率值,这个概率值接近1时,认为是正例,否则认为是负例。

训练时,一个样本x在经过神经网络的最后一层的矩阵运算结果作为输入z,经过Logistic计算后,输出一个\((0,1)\)之间的预测值。我们假设这个样本的标签值为0属于负类,如果其预测值越接近0,就越接近标签值,那么误差越小,反向传播的力度就越小。

推理时,我们预先设定一个阈值比如0.5,则当推理结果大于0.5时,认为是正类;小于0.5时认为是负类;等于0.5时,根据情况自己定义。阈值也不一定就是0.5,也可以是0.65等等,阈值越大,准确率越高,召回率越低;阈值越小则相反,准确度越低,召回率越高。

比如:

  • input=2时,output=0.88,而0.88>0.5,算作正例
  • input=-1时,output=0.27,而0.27<0.5,算作负例

6.1.2 正向传播

矩阵运算

\[ z=x \cdot w + b \tag{1} \]

分类计算

\[ a = Logistic(z)={1 \over 1 + e^{-z}} \tag{2} \]

损失函数计算

二分类交叉熵损失函数:

\[ loss(w,b) = -[y \ln a+(1-y) \ln(1-a)] \tag{3} \]

6.1.3 反向传播

求损失函数对a的偏导

\[ \frac{\partial loss}{\partial a}=-[{y \over a}+{-(1-y) \over 1-a}]=\frac{a-y}{a(1-a)} \tag{4} \]

求a对z的偏导

\[ \frac{\partial a}{\partial z}= a(1-a) \tag{5} \]

求损失函数loss对z的偏导

使用链式法则链接公式4和公式5:

\[ \frac{\partial loss}{\partial z}=\frac{\partial loss}{\partial a}\frac{\partial a}{\partial z} \]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值