深度学习(入门)——逻辑回归模型(Logistics Regression)
从逻辑回归开始,是因为这是一个简单的,可以理解成为一个简单的一层的神经网络,后续将逐步深入,了解更复杂的神经网络
一,假设函数
逻辑回归算法适用于二分类问题,例如在输入一个猫的图片到模型中,模型会输出1(这是一只猫),或者0(不是一只猫)。
对于二元分类问题,给定一个输入的特征向量X,他可能对应一个照片,在吴恩达教授的课程中,暂时是将该逻辑回归模型设置成:
y(hat) = w x + b,
做线性回归问题对二分类来讲 并不是一个好的算法。由于这样的得出来的结果可能是大于1,也可能是小于0,这对我们所需要的输出是没有任何意义的,我们所需要的输出是在0~1之间的结果,于是需要对线性函数转化为非线性函数:sigmod函数
这个函数就可以将线性回归的模型都放在0~1之间。
二,代价函数
对于一个预测模型,我们要怎样才能判断这个模型是否准确,这是就需要代价函数来进行描述,
我们需要判断,这里的y(hat)与真实的y之间的误差。于是定义了损失函数(Loss Funcation) L( y(hat) , y)
通常我们会采用最小二乘法来比较预测值和和真实值之间从差别(与凸优化有关,不是很懂),虽然平方差是一个不错的函数,但是在这里我们的损失函数是:
这样做有一个好处,我们可以举两个例子:
当y = 1时,L= - log( y (hat) ),如果想要损失函数较小,由于sigmod函数的取值是[0,1],所以y(hat)就会趋向1,从而其会趋近于1;
当y = 0时,L= - log(1 - y(hat) ),如果想要损失函数较小,则y(hat),就会趋向是1;
损失函数是针对某一个单独的样本来说的,如果要衡量一整个算法样本的表现,就需要定义一个代价函数:
这个代价函数是针对数据集中一共有m个样本来说的。所以在训练一个回归模型的时候骂我们需要知道最合适的 w 和 b 来让代价函数 J( w , b)达到最小。
三, 梯度下降法
梯度下降法可以做什么呢?梯度下降法可以训练代价函数 J( w , b) 中的参数w 和 b。
梯度:即函数下降最快的方向,由于代价函数的特性(个人认为这里是因为在运用梯度下降法 的时候只能是朝一个方向变化),所以必须定义代价函数是凸函数
初始化参数w 和 b:
观察图中的红点的变化,由于代价函数是一个凸函数,所以在这里,无论初始化在哪一个点,最终都会在最低点附近。
于是,给出迭代的公式:
其中 a 为学习率(leraning rate),用来控制步长。
四,计算图
计算图 的目的是为了在每一步中,方便计算前向和反向传播。计算图就是方便组织这种计算导数。举个栗子。
在计算这一块,大家需要了解导数的计算,偏导数的计算,还有链式法则,那么这一块就可以了解的很清楚。
五,逻辑回归中的梯度下降法。
在这里,我们首先假设在逻辑回归模型中,只设置两个特征值x1和x2,那么输入桉树就有吧w1,w2和 b,因此总结一下公式
于是,在这里计算梯度函数,计算过程如下
如果大家想要对这个过程了解的更加透彻,那么可以将这个过程完整的过一遍。
六,向量化的操作
向量化是一种基本的取出for循环的艺术。在深度学习领域,经常需要去训练很大的数据集,所以运用向量化的技巧去去除for循环,提高运算速度.。
例如,如果是计算 z = w *x+b,则计算过程就像这样:
z=0
for i in range(n_x)
z+=w[i]*x[i]
z+=b
如果是向量化计算,则一句就可以解决,这个背后的数学基础其实就是线性代数里面的矩阵乘法
z = np.dot(w,x) + b
将二者进行对比的代码
import numpy as np
import time
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print("向量化的版本是"+ str(1000*(toc - tic))+"ms")
print(c)c = 0
tic = time.time()
for i in range(1000000):c += a[i]*b[i]
toc = time.time()
print(c)
print("for loop的版本是"+ str(1000*(toc - tic))+"ms")
对比出的效果十分明显。
七,逻辑回归中的向量化
首先,我们先复习一下,在逻辑回归中的前向传播的步骤:
首先,我们可以 设置一个A矩阵,用于表示将这个输入的样本集:
显然,我们现在需要求解z,那么转化成矩阵的形式,在这里就变成了 Z = W(T) * A + b;这里的b是运用的在Python中的Broadcoasting的功能,这个功能后续再讲解。经过计算之后,所得的Z值就变成了一个行向量,之后再经过sigmoid函数的运算,就可以将整个训练集的y(hat)计算出来。
那么这一步在代码里面,就是这样
Z = np.dot(w.T,x) + b#这里的b运用的是Broadcoasting的功能
除了正向化操作,下面介绍向量化操作反向运算,反向运算的步骤:
dz = a - y;
dZ = [dz(1),dz(2),dz(3)......dz(n)];
于是: dZ = A - Y(矩阵运算)
翻译成代码的形式
db = 1/m * np.sum(dZ)
dw = 1/m * X * dz.T
八,广播(Broadcoasting)
通俗理解,其实就是在Python中,自动的将单独的数值扩展成一个数组或者矩阵。附上下面一张图:
经过这一周的学习,可以对一个逻辑回归模型有一个比较清楚地了解,下面是完成的作业的一个链接,读者可以自行做做,比较简单,传送门
本笔记是学习Andrew NG课程的学习所完成的,这里只是进行总结,如有有不对,请斧正。
深度学习(入门)——逻辑回归模型(Logistics Regression)相关推荐
- 深度学习原理-----逻辑回归算法
系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函数, ...
- 逻辑回归模型(Logistic Regression, LR)基础 - 文赛平
逻辑回归模型(Logistic Regression, LR)基础 - 文赛平 时间 2013-11-25 11:56:00 博客园精华区 原文 http://www.cnblogs.com/ ...
- 逻辑回归模型(Logistic Regression)
逻辑回归符合伯努利分布.伯努利分布就是我们常见的0-1分布,即它的随机变量只取0或者1,各自的频率分别取1−p和p,当x=0或者x=1时,我们数学定义为: 所以在常规的逻辑回归模型中,只有两个类别,0 ...
- 机器学习--逻辑回归模型(Logistic Regression)
1.逻辑回归 逻辑回归(Logistic Regression)是一种用于二元分类问题的机器学习算法.逻辑回归的目的是基于输入特征预测一个样本属于某个特定的类别的概率. 逻辑回归的核心思想是将线性回归 ...
- 逻辑回归(logistics regression)与 softmax
文章目录 分类与回归的区别 逻辑回归 逻辑回归不是回归 逻辑回归算法原理及公式推导 求解目标 损失函数 什么是交叉熵损失函数 梯度下降 逻辑回归怎么处理非线性分类问题 总结 softmax简介 sof ...
- 深度学习之边框回归(Bounding Box Regression)
从rcnn, fast rcnn, faster rcnn, yolo, r-fcn, ssd,到cvpr的yolo9000.这些paper中损失函数都包含了边框回归,除了rcnn详细介绍了,其他的p ...
- 【深度学习】逻辑回归及其损失函数的理解
文章目录 一.什么是二分类与逻辑回归(Logistic Regression)? 二.逻辑回归基本思路 三.定义损失函数(Loss Function) 一.什么是二分类与逻辑回归(Logistic R ...
- 【深度学习】logistic回归模型
目录 神经网络 数据.符号准备: logistic回归: 损失函数和代价函数: 梯度下降法: 向量化: 神经网络 我们学习深度学习的目的就是用于去训练神经网络,而神经网络是什么呢?我们先来看下面一个基 ...
- 机器学习算法(一):逻辑回归模型(Logistic Regression, LR)
目录 1 LR 1.1 直观表述 1.2 决策边界(Decision Boundary) 2. 权值求解 2.1 代价函数(似然函数) 2.1.1 为什么损失函数不用最小二乘?即逻辑斯蒂回归损失函数为 ...
最新文章
- Visual formatting model(图)
- Redis 未授权访问漏洞
- RGBD论文阅读笔记
- [软件]提高日常操作电脑的效率
- python 与栈 入门
- 电力仿真, 电力可视化源码库,MATLAB仿真,Multisim仿真,PSASP仿真, 电力地理接线图,VC++ 控件源程序
- NVIDIA显卡驱动的重装
- 如何获得大学教材的PDF版本?
- 基于FPGA的数字时钟verilog开发
- python xlwt 写入Excel
- 用户计算机MAC地址在哪看,怎么查看本机mac地址_电脑mac地址在哪里
- 女孩学医好还是学计算机好,女生选择学医好吗 学医有多累
- Leo第一次练习跆拳道--Leo与跆拳道 1
- 提供Minimal SD Base Gal/Raf SD基础培养基(含半乳糖/棉子糖)
- 九章算法笔记D2-坐标型动态规划
- CAD快速选择相同图形
- ​​​​​​青少年软件编程(C语言)等级考试试卷目录一览
- Unreal Engin_画廊制作笔记_001<设计草图,利用BSP快速搭建简单场景>
- RxJava(10-操作符原理自定义操作符)
- IP协议(五)路由算法-内部网关协议 RIP、OSPF
热门文章
- 我在成都火车站捡了个彝族美女 第72节:独自一个人出了酒吧
- 控件空指针问题,必须得记下来,好好长长记性
- CANoe-什么是vTESTstudio
- Android Studio中移动.gradle文件夹的方法
- 项目中集成融云即时通讯
- 2019年LensCulture街头摄影比赛出炉
- 天下乌鸦一般黑...
- php system函数用法,system函数如何使用?总结system函数实例用法
- 【VS Code】Windows10下VS Code配置Haskell语言环境
- “自打脸”的真勇气胜过“打肿脸充胖子”的假豪气 ——华芯通的关闭引发的产业思考...