Logistic Regression:最基础的神经网络

一、什么是logictic regression

下面的图是Andrew Ng提供的一个用logistic regression来识别主子的图片的算法结构示意图:

图片

「左边」「x0到x12287「是输入(input),我们称之为」特征(feather)」,常常用「列向量x(i)「来表示(这里的i代表第i个训练样本,下面在只讨论一个样本的时候,就暂时省略这个标记,免得看晕了-_-|||),在图片识别中,特征通常是图片的像素值,把所有的像素值排成一个序列就是输入特征,每一个特征都有自己的一个」权重(weight)」,就是图中连线上的「w0到w12287」,通常我们也把左右的权重组合成一个「列向量W」

「中间的圆圈」,我们可以叫它一个神经元,它接收来自左边的输入并乘以相应的权重,再加上一个偏置项b(一个实数),所以最终接收的总输入为:

但是这个并不是最后的输出,就跟神经元一样,会有一个「激活函数(activation function)「来对输入进行处理,来决定是否输出或者输出多少。Logistic Regression的激活函数是」sigmoid函数」,介于0和1之间,中间的斜率比较大,两边的斜率很小并在远处趋于零。长这样(记住函数表达式):

图片

我们用来表示该神经元的输出,σ()函数代表sigmoid,则可知:

这个可以看做是我们这个小模型根据输入做出的一个预测,在最开始的图对应的案例中,就是根据图片的像素在预测图片是不是猫。与对应的,每一个样本x都有自己的一个真实标签,代表图片是猫,代表不是猫。我们希望模型输出的可以尽可能的接近真实标签,这样,这个模型就可以用来预测一个新图片是不是猫了。所以,我们的任务就是要找出一组W,b,使得我们的模型可以根据给定的,正确地预测。在此处,我们可以认为,只要算出的大于0.5,那么y'就更接近1,于是可以预测为“是猫”,反之则“不是猫”。

以上就是Logistic Regression的基本结构说明。

二、怎么学习W和b

前面其实提到过了,我们「需要学习到的W和b可以让模型的预测值y'与真实标签y尽可能地接近,也就是y'和y的差距尽量地缩小」。因此,我们可以定义一个「损失函数(Loss function)」,来衡量和y的差距:

实际上,这就是交叉熵损失函数,Cross-entropy loss。交叉熵衡量了两个不同分布之间的差距,在这里,即衡量我们预测出来的分布和正式分布之间的差距。

如何说明这个式子适合当损失函数呢?且看:

  • 当y=1时,,要使L最小,则要最大,则=1;

  • 当y=0时,,要使L最小,则要最小,则=0.

如此,便知符合我们对损失函数的期望,因此适合作为损失函数。

我们知道,x代表一组输入,相当于是一个样本的特征。但是我们训练一个模型会有很多很多的训练样本,也就是有很多很多的x,就是会有x(1),x(2),...,x(m) 共m个样本(m个列向量),它们可以写成一个X矩阵:

对应的我们也有m个标签,:

通过我们的模型计算出的也会有m个:

前面我们写的损失函数,只计算一个样本的损失。但我们需要考虑所有训练样本的损失,则总损失可以这样计算:

有了总体的损失函数,我们的学习任务就可以用一句话来表述:

“寻找w和b,使得损失函数最小化”

最小化。。。说起来简单做起来难,好在我们有计算机,可以帮我们进行大量重复地运算,于是在神经网络中,我们一般使用「梯度下降法(Gradient Decent)」

图片

这个方法通俗一点就是,先随机在曲线上找一个点,然后求出该点的斜率,也称为梯度,然后顺着这个梯度的方向往下走一步,到达一个新的点之后,重复以上步骤,直到到达最低点(或达到我们满足的某个条件)。如,对w进行梯度下降,则就是重复一下步骤(重复一次称为一个「迭代」):

其中:=代表“用后面的值更新”,α代表「学习率(learning rate)」,dJ/dw就是J对w求偏导。

回到我们的Logistic Regression问题,就是要初始化(initializing)一组W和b,并给定一个学习率,指定要「迭代的次数」(就是你想让点往下面走多少步),然后每次迭代中求出w和b的梯度,并更新w和b。最终的W和b就是我们学习到的W和b,把W和b放进我们的模型中,就是我们学习到的模型,就可以用来进行预测了!

需要注意的是,这里我们使用的损失是全体训练样本的损失。实际上,使用全部样本的损失进行更新的话会太慢,但使用一个样本进行更新,误差就会很大。所以,我们更常用的是选择「一定大小的批次」(batch),然后计算一个batch内的损失,再进行参数更新。

总结一下:

  • Logistic Regression模型:,记住使用的激活函数是sigmoid函数。

  • 损失函数:衡量预测值与真实值的差距,越小越好。

  • 我们一般对一个批次的样本求总损失,然后使用梯度下降法进行更新。

  • 「训练模型的步骤」

    1. 初始化W和b

    2. 指定learning rate和迭代次数

    3. 每次迭代,根据当前W和b计算对应的梯度(J对W,b的偏导数),然后更新W和b

    4. 迭代结束,学得W和b,带入模型进行预测,分别测试在训练集合测试集上的准确率,从而评价模型

就这么明明白白(▰˘◡˘▰)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LateX 笔记

y \frac{a}{b} y A_aA_{bb} y a\times{b} y \arctan{(x)} \pi y x^2

OpenDrive ARC绘制秘籍

加和减代表曲率的正负

3W+字的设计模式手册

设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。…

datagridview 当前上下文中不存在bind_全面解析JavaScript中this指向问题

this指向参考文章:* thisJavaScript中this指向分为以下几种情况:普通函数或作为对象属性事件绑定构造函数箭头函数call/apply/bind指定下面我们来进行一一介绍普通函数或作为对象属性this取决于方法执行前面是否有“点”,有“点”的话&#x…

Unity Scene为每一个游戏物体进行扩展编辑

2个月前还在忙碌的找实习工作,看见招聘信息上面有一条熟悉扩展Unity编辑器,配合美工编程. 自己动手写完这个代码时候,发现写代码就像弹钢琴多么神奇. TestEdit类: using UnityEngine; using System.Collections; using UnityEditor;[CustomEditor(typeof(Test))] public class …

cc2530i2c可同时接受两个传感器的数据吗_汽车方向及维修_玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗...

产品品牌:徐州永诚汽车方向及维修公司产品单价:最小起订:23供货总量:2交货期限:13发货城市:徐州玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗 [qadxfh3k]凭以往的经验,像这种多个控制模…

OpenXLSX 字段读取问题

在读取excel的时候发现有些字段无法读取,通过把excel文件解压后对比发现,正常读取和不 能正常读取的字段在sharedString.xml中存储的格式有差异,取其中一个字段,如下图: 正常读取的 不能读取的 对比可以看到其区别&a…

六西格玛dfss_六西格玛系列知识之二:六西格玛管理的基本原理

六西格玛管理是一系统,其系统性体现在它既提出了面向产品和服务设计开发的六西格玛设计,又提出了面向流程、产品制造、服务提供的六西格玛改进方法。从当前的情况来看,六西格玛设计(DFSS)项目推进尚未形成统一的或得到…

Could NOT find XXX (missing: XXX_LIBRARY XXX_DIR)

有时候从github上下载一些新的包编译时经常会缺少一些插件或库文件,比如 Could NOT find Bullet (missing: BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR) 或者 Could NOT find SDL (miss…

minheight能继承吗_民法典亮点盘点 | 侄子能继承叔叔的遗产吗?

2020年5月28日,十三届全国人大三次会议表决通过了《中华人民共和国民法典》,《民法典》将于2021年1月1日起施行。《民法典》共7编,依次为:总则编、物权编、合同编、人格权编、婚姻家庭编、继承编、侵权责任编,以及附则…

一分二功率分配器_一文学会微波功率分配器

功率分配器是微波电路设计中常用的一个无源元器件,简称功分器,顾名思义,就是把一路输出功率按照一定的比例分配成N路功率输出的一种微波元器件,如下图所示,A端口进入的信号分成两路信号从C1和C2端口输出。当然&#xf…

高德地图定位精度多少米_中美俄卫星定位精度分别是多少?美0.1米,俄10米,中国呢?...

在古代,悬于天际的北斗七星就被那时候的人们当做辨别方向的工具,在现代,太空之中的北斗卫星也在为人们指引方向,为了这一天的到来,我们等待了太久太久。1993年发生的银河号事件里,美国宣称我国商船携带了违…

QT 语言切换

1. 代码里面需要切换语言的文字用tr包裹 2. 在工程pro文件目录下 3. 使用QT安装目录下的 Linguist程序增加中文字符串 4. 打开命令行 5. 执行 lrelease.exe ......\translations\zh_CN.ts

excel条形码字体_在Excel中批量生成条形码,竟如此简单!

条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。那么如何在Excel中快速生成条形码呢?我们以前看到的方法有&am…

(视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定...

本文是《快速创建网站》系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文。 访问本系列目录,请点击:http://devopshub.cn/tag/wordpress-on-azure/ 1. 网站管理平台WordPress和云计算…

自定义外部协议使浏览器拉起本地程序

什么是自定义协议 由于我们的游戏需要在浏览器中调用NPAPI插件,而chrome移除了NPAPI的支持,导致游戏并不能很好的适配所有的浏览器,所以这个时候我们对于chrome浏览器用到了自定义浏览器协议这一标准。自定义浏览器协议允许在浏览器中使用pr…

hssfcolor 不建议使用_不建议使用微信双开的真正原因!

不少小伙伴都有两个甚至多个微信号,通常一个是自己的私人号,其它则用于工作,所以想要在手机中双开微信,这样使用起来更方便。不过使用 iPhone 的小伙伴就很郁闷了,为什么在 iPhone 上不能像部分安卓手机那样方便的双开…

React Canvas:高性能渲染 React 组

React Canvas 提供了使用 Canvas 渲染移动 Web App 界面的能力,替代传统的 DOM 渲染,具有更接近 Native App 的使用体验。React Canvas 提供了一组标准的 React 组件,由基于的渲染元素抽象而成。 GitHub 源码下载 示例代码: …

移除集合效率高还是add高_List、set集合接口分析

一、List接口详解1、List接口有三个实现类,ArrayList、LinkedList、Vector2、三个实现类的异同点:(1)ArrayList: 作为list接口的主要实现类;线程不安全,效率高;底层使用Object[]存储&#xff08…

python 读取excel太慢_Python 读取excel并转换为字典

方法一:利用利用xlrd读取excel文件其实整个过程比较简单,利用xlrd读取excel文件,再把读取到的数据转换为dict即可。1.安装 xlrdpip install xlrd2.读取文件,并进行格式转换导入的excel表格的格式是这样的:解析后的格式…