单层神经网络-Logistics回归中误差曲线
➤01 Logistic回归
Logistic回归通常用于处理二类分类问题。本质上它是单层神经网络模型。
1.问题
给出对象的特征向量:x={x1,x2,⋯,xn}x = \left\{ {x_1 ,x_2 , \cdots ,x_n } \right\}x={x1,x2,⋯,xn}
得到一个预测结果:y^=P{y=1∣x}\hat y = P\left\{ {y = 1|x} \right\}y^=P{y=1∣x}
▲ Logistic回归模型
2. Logistic回归
首先进行线性回归:
z=WT⋅xˉ+bz = W^T \cdot \bar x + bz=WT⋅xˉ+b
然后在使用一个Sigmoid函数得到预测结果:y^=sigmoid(z)=11+e−z\hat y = sigmoid\left( z \right) = {1 \over {1 + e^{ - z} }}y^=sigmoid(z)=1+e−z1
▲ Sigmoid函数以及它对应的导数
def sigmoid(x):return 1/(1+exp(-x))def dsigmoid(x):x = sigmoid(x)return x*(1-x)x = linspace(-5, 5, 100)
z = sigmoid(x)
dz = dsigmoid(x)plt.plot(x, z, label='sigmoid')
plt.plot(x, dz, label='derivative')
plt.xlabel("x")
plt.ylabel("sigmoid(x)")
plt.grid(True)
plt.legend(loc='upper right')
plt.tight_layout()
plt.show()
➤02 简单举例
1.逻辑与
使用Logistic回归来实现逻辑与逻辑:
(1) 与逻辑
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
▲ AND逻辑示意图
(2) Logistic回归
z=w1⋅x1+w2⋅x2+bz = w_1 \cdot x_1 + w_2 \cdot x_2 + bz=w1⋅x1+w2⋅x2+by^=11+e−z\hat y = {1 \over {1 + e^{ - z} }}y^=1+e−z1
定义损失函数:
L(y^,y)=12(y^−y)2L\left( {\hat y,y} \right) = {1 \over 2}\left( {\hat y - y} \right)^2L(y^,y)=21(y^−y)2
那么总的损失函数为:
L(y^,y)=∑i=1412(y^i−yi)2L\left( {\hat y,y} \right) = \sum\limits_{i = 1}^4 {{1 \over 2}\left( {\hat y_i - y_i } \right)^2 }L(y^,y)=i=1∑421(y^i−yi)2
▲ W1,W2相对的误差曲线
可以看到这个误差相对于W1,W2是一个非凸的误差曲线。
▲ W2,b参数误差平面
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LOGTEST.PY -- by Dr. ZhuoQing 2020-11-17
#
# Note:
#============================================================from headm import *
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cmb=-1
#------------------------------------------------------------
def sigmoid(x):return 1/(1+exp(-x))def error(w1,w2):z00 = bz01 = w1+bz10 = w2+bz11 = w1+w2+by00 = sigmoid(z00)y01 = sigmoid(z01)y10 = sigmoid(z10)y11 = sigmoid(z11)_y00 = 0_y01 = 0_y10 = 0_y11 = 1res = (y00-_y00)**2 +\(y10-_y10)**2 +\(y01-_y01)**2 +\(y11-_y11)**2return res/2.0#------------------------------------------------------------
w1 = arange(-5, 5, 0.1)
w2 = arange(-5, 5, 0.1)
W1,W2 = meshgrid(w1, w2)E = error(W1, W2)ax = plt.axes(projection='3d')
ax.plot_surface(W1, W2, E, cmap='coolwarm')ax.set_xlabel('W1 Axes')
ax.set_ylabel('W2 Axes')
ax.set_zlabel('Error Axes')plt.show()#------------------------------------------------------------
# END OF FILE : LOGTEST.PY
#============================================================
如果取对数似然损失函数:
L(y^,y)=−[y⋅log(y^)+(1−y)⋅log(1−y^)]L\left( {\hat y,y} \right) = - \left[ {y \cdot \log \left( {\hat y} \right) + \left( {1 - y} \right) \cdot \log \left( {1 - \hat y} \right)} \right]L(y^,y)=−[y⋅log(y^)+(1−y)⋅log(1−y^)]
根据前面定义,总损失函数为:
L(y^,y)=log(1−y^11)L\left( {\hat y,y} \right) = \log \left( {1 - \hat y_{11} } \right)L(y^,y)=log(1−y^11)
L(y^,y)=log(1−11+e−w1−w2−b)L\left( {\hat y,y} \right) = \log \left( {1 - {1 \over {1 + e^{ - w_1 - w_2 - b} }}} \right)L(y^,y)=log(1−1+e−w1−w2−b1)
对数似然损失函数相对于w1,w2的变化曲面:
▲ 对数似然损失函数
w2,b参数对应的损失误差曲面:
➤03 线性可分与不可分
使用Logistic回归来进行分类,它只能个解决线性可分的问题。下面对于逻辑与和逻辑异或所组成的Logistic回归所对应的参数的误差平面的特点。
1.逻辑与w1,w2的误差曲面
从下面的曲线可以看到,误差曲线的最低值小于0.5,也就是说,如果恢复到逻辑值,这样的误差是可以回归到0的。因此,使用Logistic回归的时候是可以正确的区分逻辑与分类的。
▲ 逻辑与的参数误差曲线
2.逻辑异或的参数误差曲线
下面的曲线则显示的是逻辑异或的关系。可以看到它的最低值仍然是大于0.5的。这也说明该网络无法区分逻辑异或(这是一个非线性可分的问题)的种类的。
▲ 异或逻辑的参数误差曲线
➤※ 结论
为什么在Logistic回归中,对于损失函数不再使用均方差L(y^,y)=12(y^−y)2L\left( {\hat y,y} \right) = {1 \over 2}\left( {\hat y - y} \right)^2L(y^,y)=21(y^−y)2,而使用对数似然函数L(y^,y)=−[y⋅logy^+(1−y)⋅log(1−y^)]L\left( {\hat y,y} \right) = - \left[ {y \cdot \log \hat y + \left( {1 - y} \right) \cdot \log \left( {1 - \hat y} \right)} \right]L(y^,y)=−[y⋅logy^+(1−y)⋅log(1−y^)]
通过逻辑与函数对比了这两种误差相对于参数的变化曲线,可以看到:
使用均方差进行Logistic回归的时候,误差曲线往往是非凸的,而使用对数似然损失函数,参数优化问题往往变成了凸优化。
通过Logistic参数误差曲线也可以分别出该网络是否可以解决相关的分类问题。对于线性可分的问题,使用Logitisc回归是可以区分的。但对于非线性可分的问题,使用Logistic无法解决。
■ 相关文献链接:
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LOGTEST.PY -- by Dr. ZhuoQing 2020-11-17
#
# Note:
#============================================================from headm import *
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm#------------------------------------------------------------
def sigmoid(x):return 1/(1+exp(-x))def error(w1,w2,b):z00 = bz01 = w1+bz10 = w2+bz11 = w1+w2+by00 = sigmoid(z00)y01 = sigmoid(z01)y10 = sigmoid(z10)y11 = sigmoid(z11)_y00 = 1_y01 = 0_y10 = 0_y11 = 1# return log(1-y11)res = (y00-_y00)**2 +\(y10-_y10)**2 +\(y01-_y01)**2 +\(y11-_y11)**2return res/2.0#------------------------------------------------------------
w1 = arange(-10, 10, 0.1)
w2 = arange(-10, 10, 0.1)
W1,W2 = meshgrid(w1, w2)E = error(W1, W2, -5)ax = plt.axes(projection='3d')
ax.plot_surface(W1, W2, E, cmap='coolwarm')ax.set_xlabel('W1 Axes')
ax.set_ylabel('W2 Axes')
ax.set_zlabel('Error Axes')plt.show()#------------------------------------------------------------
# END OF FILE : LOGTEST.PY
#============================================================
单层神经网络-Logistics回归中误差曲线相关推荐
- 深度学习基础--SOFTMAX回归(单层神经网络)
深度学习基础–SOFTMAX回归(单层神经网络) 最近在阅读一本书籍–Dive-into-DL-Pytorch(动手学深度学习),链接:https://github.com/newmonkey/Div ...
- 华南理工深度学习与神经网络期末考试_深度学习基础:单层神经网络之线性回归...
3.1 线性回归 线性回归输出是一个连续值,因此适用于回归问题.回归问题在实际中很常见,如预测房屋价格.气温.销售额等连续值的问题.与回归问题不同,分类问题中模型的最终输出是一个离散值.我们所说的图像 ...
- 译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共7865个字,27张图,预计阅读时间:20分钟. 在前言中,已经提到经常使用深度学习的领域就是模 ...
- Logistics回归模型
二分类资料logistics回归: 因变量为二分类变量的资料(一般为0,1分类),可用非条件logistics回归和条件logistics回归进行分析.非条件logistics回归多用于非配比研究资料 ...
- 深度学习PyTorch笔记(12):线性神经网络——softmax回归
深度学习PyTorch笔记(12):线性神经网络--softmax回归 6 线性神经网络--softmax回归 6.1 softmax回归 6.1.1 概念 6.1.2 softmax运算 6.2 图 ...
- 实验五 Logistics回归
目录 概念 Logistics回归 Sigmoid函数 优缺点 基于最优化方法的最佳回归系数确定 梯度上升法 主要思想 Logistic回归梯度上升优化算法 绘制决策边界 随机梯度上升 改进的随机梯度 ...
- 神经网络logistic回归模型,logistic回归的基本理论
神经网络挖掘模型与logistic回归挖掘模型的不同点有哪些? 逻辑回归有点像线性回归,但是它是当因变量不是数字时使用.比如说因变量是布尔变量(如是/否响应),这时候就需要逻辑回归.它称为回归,但实际 ...
- TensorFlow基础8-实现单层神经网络
记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,神经网络的设计 二,实现单层神经网络 一,神经网络的设计 二,实现单层神经网络 导入库 加载数据 数据预处理 设置超参 ...
- Logistics回归数据集(testSet.txt)《机器学习实战》【美】Peter Harrington python3.6+pycharm完美实现代码
若你需要 这个数据集,直接新建一个.txt文件,将这里的数据全部拷贝过去即可,下面为 这本书<机器学习实战>[美]Peter Harrington 第五章 Logistics 回归 使用 ...
最新文章
- zen3架构_AMD Zen3架构处理器的L3缓存或将翻倍到64MB
- 读大道至简第四章有感
- STM8S103f单片机的开发(1)LED灯的点亮
- sumif单列求和_求和、单条件求和、多条件求和、隔列求和等实用技巧解读
- Windows 错误代码
- 郭敏:什么是交通事件?如何做好交通事件管理以降低二次事故发生概率?
- 从酷狗的网络红歌说起
- PHP面试题狼与兔子,假设一座圆形的山, 山脚分布着N个山洞, 山洞与山洞形成一个圆环,选择其中一个山洞作为起始, 兔子每天前进到l个洞, 狼每天前进到第k个洞 求多少天后, 兔子与狼在一个洞里
- 追求神乎其技的程式设计之道(八)
- Spark-Spark Streaming(4)-- 部署、监控
- Android获取手机屏幕密度
- 卷积神经网络和循环神经网络的思想内核是什么
- 人生最应该坚持的5件事
- 【学渣无能狂怒】今天也是为了学习落泪的一天--每天一遍Java再见
- Qt 串口获取串口设备名称
- 阿里云大学python_阿里云大学课程python
- 如何在自己网站上播放上传到优酷的视频
- java对配_[Java教程]对局匹配
- 广州大学操作系统实验 2020版 银行家算法
- 实验10——卫星网络系统仿真
热门文章
- Delphi 的内存操作函数(2): 给数组指针分配内存
- WINCE开发中,EBOOT模式下,TFTP方式无法下载NK镜像的问题解决方案
- Hive代码组织及架构简单介绍
- ubuntu下 mysql数据 自执行备份
- linux 修改主机名 修改ip
- 在线项目管理工具比较之二:LiquidPlanner
- 验证码的三种做法[纯数字][纯汉字][字母\数字\汉字混合]C#
- JavaScript编码风格指南
- 几个重要的 ASM Disk Groups 参数
- CentOS6.X 系统安装图文教程,超详细