
欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。
通过调整模型的容量(capacity),我们可以控制模型是否偏向于过拟合或者欠拟合。通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。
欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。
相关介绍:
人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物神经网络的启发但不完全相同的计算系统。这种系统通过例子来“学习”执行任务,而不用特定于任务的规则进行编程。
例如,在图像识别中,人工神经网络可能会通过分析一些图像样本来学习识别包含猫的图像,这些图像被手工标记为“猫”或“不是猫”,并使用结果识别在其他图像中的猫。
他们这样做是在没有猫的任何先验知识的情况下进行的,例如,它们有毛皮,尾巴,胡须和类似猫的脸。相反,人工神经网络会自动从它们处理的学习材料中生成识别特征。
人工神经网络是基于称为人工神经元的连接单元或节点所构成的集合,这些单元或节点松散地模拟生物大脑中的神经元。像生物大脑中的突触一样,每个连接可以将信号从一个人工神经元传输到另一个人工神经元。接收信号的人工神经元可以对其进行处理,然后向与之相连的附加人造神经元发出信号。
nprandomrandom 返回[0,1)区间的随机数,2nprandomrandom - 1 返回[-1,1)的随机数,具体可以看网页链接
看这个神经网络结构应该就输入输出两层,l1的shape为npdot(l0,syn0),[43],[31]的矩阵相乘得到[41]的矩阵,y = nparray([[0,1,1,0]])T,y也是[41]的矩阵
拟合
他们都是拟合,先说下拟合的定义:
形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。
1 线性回归
回归分析常用于分析两个变量X和Y 之间的关系。 比如 X=房子大小 和 Y=房价 之间的关系, X=(公园人流量,公园门票票价) 与 Y=(公园收入) 之间的关系等等。
那么你的数据点在图上可以这么看
现在你想找到 房子大小和房价的关系, 也就是一个函数f(x) = y 能够很好的表示 这两个变量之间的关系。
于是你需要大概评估一下这个 房子大小和房价大概是一个什么关系
是线性的关系吗 还是非线性的关系
当然在这个问题里面, 线性的关系更符合这两者的关系。于是我们 选择一个合适的 线性模型, 最常用的是 f(x) = ax+b
然后用这个线性的模型 去 匹配这些数据点。
11 怎么匹配
有了数据点 和 你臆想出来的线性模型,怎么进行匹配,也就是怎么用这根线最好地描述些数据点的关系
需要最好地描述点, 我们又需要一个关于“好”的定义。你也可以想出很多关于“好”的定义。下面有两个,
这两个定义都是 将模型与数据点之间的距离差 之和做为 衡量匹配好坏的标准。 误差越小, 匹配程度越大。
但是 总的来说, 我们想要找到的模型, 最后是想要使 f(x) 最大程度地 与y相似, 所以我们想要尽量地减少 f(x)与y之间的差值。 所以在这里 用第二个图的“好的定义” 来评估这根线的匹配程度是很合理的。于是我们有了误差公式!!!!!
这个公式,说的是,可以通过调整不同的a 和 b的值,就能使 误差不断变化,而当你找到这个公式的最小值时,你就能得到最好的a,b 而这对(a,b)就是能最好描述你数据关系的模型参数。
111 沿导数下降法(Gradient Descent)
怎么找 cost(a,b)的最小 cost(a,b) 的图像其实像一个碗 一样,有一个最低点。 找这个最低点的办法就是,先随便找一个点(eg a=3, b = 2), 然后 沿着这个碗下降的方向找,最后就能找到碗的最低点。
cost(a,b) 的形状
怎么找(某一点)碗下降的方向 答案是,找那一点导数的反方向。拿参数a 举个例子, a与cost 关系如下图,
只要将任意一个a, 沿着使cost 导数的反方向 慢慢移动,那么 最终有一天a值就会到达使 cost 最小的那一点 于是你可以不断地移动a,b, 向着最低点前进。
当然在进行移动的时候也需要考虑,每次移动的速度,也就是\Alpha的值,这个值也叫做(学习率) 学习率的增大可以加速参数逼近最优的情况, 但是如果在快要到达函数的底端的时候,需要减小学习率,以免出现cost 不断增大或者不停摆动的情况(如下图, J(a,b)就是cost(a,b) )。 所以说,当出现以上两种情况时候,我们应该果断选取一个较小的学习率, 以保证cost能减少到一个稳定的值(我们称为 收敛converge)
112 直接求解最小点方法
这时候,有的人会问,为什么要让a不停地往下跑呢? 而且还需要设定学习率, 多麻烦, 直接让找 导数为0点(最小极值), 不就可以了吗 嗯。。。也可以但是各有优缺,
具体方法和优劣分析可见Rachel-Zhang 的博客: http://blogcsdnnet/abcjennifer/article/details/7700772
总结一下: 回归问题的解决方法是:
1 假定一个模型 2 定义什么叫做最好的匹配(构造误差函数) 3 用这个模型去匹配已有的数据点(训练集)
需要进一步讨论的问题:
如果参数(a,b)更多了该怎么办
如果最合适的匹配模型并不是线性的怎么办 --- 选用一个 非线性模型 比如 y = ax^2 + bx + c
如果误差(cost)与a,b(模型参数)的关系不是像碗一样的, 而是凹凸不平的该怎么办 ------ 这时候你就得注意你得到的cost的最低点(局部的最低)可能因初始点的不同而不同。 而这些最低点你需要进行比较,以确定是不是全局的最低
2分类(Logistic regression)
分类问题也是一类很常见的问题。 比如说,怎么判定一个人是高富帅还是吊丝 假如我是中央电视台的记者,采访了N个人, 拿到了第一手资料。资料如下
我们想要根据一个人的口袋钱数量,来预测一个人是(富帅) 还是 (吊丝) 我们能不能用回归的方法做呢 显然是可以的, 我们只要找到一个模型,然后再进行匹配就可以了。
但是因为分类问题的y值常常是一些离散的数字,(比如, 富帅为1, 吊丝为0), 所以我们已经不能用一个 简单的线性函数来拟合这些数据了。我们需要一个更逼真的模型。
于是我们引入了一个更适合处理分类问题的函数--- 一个 非线性函数, 阶跃函数。
这个函数的形状更像我们分类问题的数据分布,所以,用他来拟合分类问题的数据将 更适合!
所以我们有了一个新的模型,
通过调整a,b 的值,可以让模型不断改变以匹配数据点。 为了匹配数据点,我们又需要一个衡量匹配程度的函数,就像 回归问题一样的cost 函数 于是同理我们可以得到cost
于是我们急切地想要把它用我们之前的gradient descent 的方法求解出使cost 最小的两个a,b值。 但是很遗憾的是, 这个cost函数关于a,b,是非凸(non-convex)的。 就像下面那张图那样坑坑洼洼。。。
所以你 没有办法通过以上两种方法(111和112)求出这个cost函数的 全局最小值。
所以你需要构造一个更好的cost函数, 在可以 衡量拟合程度的同时 又是 一个关于a,b 的凸函数(像回归问题的cost一样,和一个碗一样,只有一个极小值)
这怎么构造啊
幸好我们还有各种伟大的数学家,他们夜以继日,终于赶制出了一个形状和碗一样(convex)的cost函数 (Maximum Likelihoods Estimation 更具体的介绍请看 http://wwwholehouseorg/mlclass/06_Logistic_Regressionhtml )
现在我们又可以用我们熟悉的 导数方向下降法(gradient descent) 移动a, b的值,使cost 降低到最小。
最后,分类的问题就这样被解决了。
当然,更复杂的问题可能有:
现在是分成两类,如果数据需要分成三类或者更多该怎么办 ---- 假如有A,B,C三类, 把其中A类做为1,BC做为0,然后做Logistic regression, 得到模型a, 同理将B类做为1,AC作为0,得到模型b, 再同理得到模型c 最后测试的时候, 对任意一个数据点x, 我们能够得到x分别属于A,B,C三类的概率值
最后比较大小,哪个大,这个x就属于哪一类
具体可看, http://blogcsdnnet/abcjennifer/article/details/7716281 (七)
3总结(两个问题的区别)
这篇文章大概的意图是能想让大家了解, 机器学习中最基本的两类问题,线性回归和分类。 能让大家有个清晰的思想,对于这两类问题都有以下几个步骤,
如何选取一个 合理的模型(线性的,or 非线性的(eg 阶跃函数, 高斯函数))
制造一个"美好"的 误差函数 (可以评估拟合程度,而且还是convex函数)
采取一切可能的技术(eg 导数下降法,解极值方程法) 求出最好的模型参数
谈谈回归和分类的区别:
其实 回归问题和分类问题的本质一样,都是针对一个输入做出一个输出预测,其区别在于 输出变量的类型。
分类问题是指,给定一个新的模式,根据训练集推断它所对应的类别(如:+1,-1),是一种定性输出,也叫离散变量预测;
回归问题是指,给定一个新的模式,根据训练集推断它所对应的输出值(实数)是多少,是一种定量输出,也叫连续变量预测。
举个例子:预测明天的气温是多少度,这是一个回归任务;预测明天是阴、晴还是雨,就是一个分类任务。
文章知识点与官方知识档案匹配
算法技能树首页概览
31211 人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
PyTorch-RNN循环神经网络实现分类-回归_Coding路人王的博客
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 对循环神经网络的研究始于二十世纪80-90年代,
分类与回归及网络搭建+神经网络简介(学习记录与分享)
1神经网络是函数 有人可能会认为神经网络是池化层,全连接层,激活函数等等元素构成。但学长告诉我们,神经网络本质就是函数。 所以下次可以在不懂的朋友面前装一手,问他什么是神经网络啊,你可以告诉他,神经网络就是函数(doge) 2介绍一
BP神经网络用于分类和回归
matlab 编写的BP神经网络,用于分类和回归
机器学习基础分类任务 和 回归任务 的 区别与联系
分类任务 和 回归任务 的区别在于 需要预测的值的类型: 回归任务,是对 连续值 进行预测(比如 多少); 分类任务,是对 离散值 进行预测(比如 是不是,属不属于,或者 属于哪一类)。 打个比方, 预测 明天的气温是多少度,这是一个回归任务; 预测 明天会不会下雨,就是一个分类任务。
继续访问
多分类神经网络:Softmax回归_L_bloomer的博客_神经网络
1逻辑回归是一个单层神经网络,计算非常快速,在使用OvR和MvM这样需要同时建立多个模型的方 法时,运算速度不会成为太大的问题。但真实使用的神经网络往往是一个庞大的算法,建立一个模 型就会耗费很多时间,因此必须建立很多个模型来求解的
神经网络-回归(Python)_li_rshan的博客
回归与神经网络简介 回归分析 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 回归分析的作用是: ①从一组数据出发确定某些变量之间的定量关系式 ②对变量间这些关系式进行统计检验。并从
最新发布 深度学习——分类和回归问题联系与区别
深度学习——分类和回归问题联系与区别
继续访问
人工神经网络的分类包括,人工神经网络的分类有
从20世纪80年代末期,人工神经网络方法开始应用于遥感图像的自动分类。目前,在遥感图像的自动分类方面,应用和研究比较多的人工神经网络方法主要有以下几种:人脑计算机对接技术项目名称:小发猫 (1)BP(Back Propagation)神经网络,这是一种应用较广泛的前馈式网络,属于有监督分类算法,它将先验知识融于网络学习之中,加以最大限度地利用,适应性好,在类别数少的情况下能够得到相当高的精度,但是其网络的学习主要采用误差修正算法,识别对象种类多时,随着网络规模的扩大,需要的计算过程较长,收敛缓慢而不稳定,且
继续访问
(二)神经网络入门之Logistic回归(分类问题)_coderpai的博客
这篇教程是翻译Peter Roelants写的神经网络教程,作者已经授权翻译,这是原文。 该教程将介绍如何入门神经网络,一共包含五部分。你可以在以下链接找到完整内容。 Logistic回归(分类问题) 这部分教程将介绍一部分:
组合分类和回归的神经网络模型_Together_CZ的博客_回归网络
我们可以将数据用作开发单独的回归和分类多层感知器(MLP)神经网络模型的基础。 注意:我们并未尝试为此数据集开发最佳模型; 相反,我们正在展示一种特定的技术:开发可以进行回归和分类预测的模型。
Tensorflow学习二:神经网络用于分类和回归的损失函数
引言: 对于二分类问题,一般会将预测结果经过一个非线性变换缩小到0到1之间,并设置一个阀值,比如05,小于05便是0,大于05便是1。但是这种做法对于多分类是不适用的。交叉熵: 通过神经网络解决多分类的方法是设置n个输出节点,n代表类别数。对于每一个样例,神经网络会得到一个n维数组做为输出结果。数组中的每一个维度代表对应的类别。理想情况下,如果一个样本属于k,那么这个类
继续访问
人工神经网络模型与分类
1 人工神经网络的分类 按性能分:连续型和离散型网络,或确定型和随机型网络。 按拓扑结构分:前向网络和反馈网络。 前向网络有自适应线性神经网络(AdaptiveLinear,简称Adaline)、单层感知器、多层感知器、BP等。 前向网络,网络中各个神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示。这种网络实现信号从输入空间
继续访问
深度学习---卷积神经网络解决分类与回归问题_wowMJX的博客
(1)分类:经过一系列的卷积层和池化层之后,再经过全连接层得到样本属于每个类的得分(概率值),用softmax对其进行分类。 (2)回归:定位,用一个矩形框来框住要识别的物体。 ①回归:输入数据通过神经网络不断的拟合数据得到x,y,w,h,通
机器学习 --- 1 线性回归与分类, 解决与区别
机器学习可以解决很多问题,其中最为重要的两个是 回归与分类。 这两个问题怎么解决, 它们之间又有什么区别呢? 以下举几个简单的例子,以给大家一个概念 1 线性回归 回归分析常用于分析两个变量X和Y 之间的关系。 比如 X=房子大小 和 Y=房价 之间的关系, X=(公园人流量,公园门票票价) 与 Y=(公园收入) 之间的关系等等。 那么你的数据点在图上可以这么看 现在你想找到 房
继续访问
线性模型小结:还分不清线性回归和线性分类模型?
线性模型0 写在前面1 线性模型2 用于回归和分类回归问题分类问题3 分类任务的几个问题31 如何解决非线性的分类问题32 如何解决多分类问题:三种解决 0 写在前面 今天对线性模型做一个总结,围绕以下两个点理一理思路: 判别函数 - 决策函数; 线性模型 - 线性模型各类拓展 具体沿着以下几个问题展开: 1 生成方法与判别方法 2 判别函数与决策函数 3 线性模型 4 广义
BP神经网络的过拟合问题是神经网络训练中常见的问题之一。针对这个问题,可以采取许多方法来解决,例如使用L1正则化和dropout方法。这两种方法都可以用于控制神经网络的复杂性,防止过拟合。
L1正则化是通过在损失函数中添加权重的L1范数来实现的。这个方法可以减少权重的数量,并且可以将一些权重降为0,从而实现特征的选择。这个方法适用于需要进行特征选择的情况。
Dropout方法是一种随机失活技术。它通过在训练过程中随机关闭一些神经元来减少网络的复杂度,从而防止过拟合。这个方法适用于需要提高网络的泛化能力的情况。
针对BP神经网络回归过拟合问题,建议尝试使用L1正则化和dropout方法来解决。如果需要进行特征选择,则可以使用L1正则化。如果需要提高网络的泛化能力,则可以使用dropout方法。在使用这些方法时,需要进行参数调优,以找到最佳的超参数组合,以便在控制过拟合的同时保持模型的预测能力。
在开始之前,我们先来看一下维基百科给出的 万能近似定理(Universal approximation theorem) 描述:
Universal approximation theorem (Hornik et al, 1989;Cybenko, 1989) 定理表明:前馈神经网络,只需具备单层隐含层和有限个神经单元,就能以任意精度拟合任意复杂度的函数。这是个已经被证明的定理。下面我们用一种轻松的方式解释,为什么神经网络(理论上)可以拟合任何函数?
看过《神偷奶爸》这部**的同学都知道,小黄人( Minions )非常喜欢吃香蕉。不过,现在它只有12个苹果,但它对苹果不感兴趣,想着如果谁能用香蕉换它的苹果就好了。不经意间,它发现了一个神奇的小屋。
小黄人向神奇小屋的窗户里放进一个苹果,神奇小屋什么也不会给它。小黄人又尝试向小屋的窗户里放进5个苹果,神奇小屋突然吐出16个香蕉!这下小黄人可高兴坏了。然后,小黄人又尝试扔给神奇小屋6个苹果,神奇小屋又吐出来20个香蕉。
现在,小黄人的12个苹果用完了,它抱着换来的香蕉想:如果我给它3个苹果,小屋会吐出来多少香蕉呢?
这是一道小学题(找规律),如何解答?
你可能脱口而出,8个香蕉!!OK,好吧,说明你的智商可以学习AI这么高深的学科了~
如何使用机器学习的步骤解答这道小学生做的题目呢(你可能觉得这是杀鸡用了宰牛刀)。
我们使用 变量 x 表示扔给神奇小屋的苹果数量( 输入input ),使用 变量 ŷ 表示神奇小屋吐出来的香蕉数量( 输出Output ),那么我们就得到了一个 数据集(Data set) :
我们的目标是,构建一个数学 模型(Model) ,使得该模型满足数据集的隐含规律。即,向模型输入 x 的值,模型会输出对应的 ŷ 值。
小学生应该学过一元函数(y = wx + b)。既然是小学题目,那么使用比较简单的函数应该就能模拟数据集的规律。所以我们定义了一个一元一次函数模型:
那么问题来了,我们怎样才能确定函数的两个 参数w,b ?
聪明的你可能又会脱口而出,是y = 4x + (-4) !!OK,你再次证明了你的智商已经超过小学生或者初中生。
但是小黄人没有你那么聪明,它只能猜。如果w=1, b=0,结果会是怎样?
很明显,模型的 输出(预测)值 y 与实际数据集中的 真实值 ŷ 相差很大。小黄人不满意,又随机猜了一次。w=2,b=2,结果又是怎样呢?
嗯,这次模型的输出值 y 与数据集中的真实值 ŷ 相差似乎不那么大了。小黄人就想,这两个候选模型,哪一个更好呢(更能模拟数据集中的规律)?如何将”更好“量化?
于是,我们引出 损失函数(lost function) 的概念。
将预测值 y 与真实值 ŷ 之间的差值平方和,作为“更好”的一种量化。损失函数越小, 即,预测值与真实值之间的差值越小,说明参数w,b越能模拟数据集中的规律。
有了损失函数,我们来看一看,上面两个候选模型的损失函数值各是多少。
模型 y = 2x + 2 的损失函数值L(2,2) = 68,小于L(1,0) = 318,所以候选模型y = 2x + 2胜出。
小黄人是一个追求极致的人。损失函数值68虽然小于318,但是它还是很大呀,有没有其他参数w,b使得损失函数L(w,b)的值比68还小。
所以,我们又引出了 优化器(Optimizer) 的概念。
想办法找出使得损失函数值L(w,b)最小的参数w,b。由于小黄人没有学过梯度下降法(一种凸函数优化算法,不懂也没关系,现在用不到),所以它只能使用”随机尝试法“。
小黄人从参数w=2,b=2,开始,以步长为1进行随机尝试。即,在“加一减一”的范围内,尝试坐标点(2,2)周围的四个点 : (3,2)、(2,3)、(1,2)、(1,1)。结果发现,在点(3,2)处,损失函数值小于其他三个点和原先点处的损失值。
所以,小黄人发现了一个更好的候选模型 y = 3x + 2,其损失函数值为26,比68小的多。小黄人,很兴奋,用同样的方式又开始了尝试。以此类推,它接着发现了L(3,1) =17、L(3,0) =14 两个坐标点。然而,在点(3,0)周围的尝试,都没有发现比14更小的损失函数值。
这样就结束了吗?
高智商的你,一定能想到,在点(4,-4)处,损失函数值最小:L(4,-4) =0。但是,用上述尝试方法并不能找到坐标点(4, -4)。
问题出在了哪儿?是初始点选择的问题。
小黄人发现,如果从坐标点(-2,-4)开始上述方式的尝试,最终会找到使得损失函数最小的(4,-4)点。如果深入研究,将涉及到最优搜索问题,超出本片文章的范围。
我们当前只需知道,能够通过最优方法(如,最小二乘法),找到使得损失函数最小的模型参数w,b。
上面这个故事就是线性回归??
我们需要给出一个稍微严谨点的定义,来说明什么是线性回归。下面是《机器学习》(周志华著)中给出的一句话:
将这句话对应到我们的模型中。模型函数 y = 4x - 4 就是句中学得的“线性模型”。然后,在我们的故事中,不是尽可能准确地预测真实值输出标记,而是百分百预测了真实值输出标记损失函数值能够达到最小0。
其实,没那么简单我们稍微扩展一下。
有一天,小黄人发现,如果给神奇小屋1个苹果、2个香蕉、3个梨,神奇小屋就会吐给它一只猫咪~ 喵喵喵~。真的太神奇了。。。。
这时,模型函数不再是简单的一元函数,而是三元函数,有三个输入变量 (x1, x2, x3),和4个参数 (w1, w2, w3, b) 需要优化。我们将这种情况称之为“ 多元线性回归(multivariate linear regression) ”。其实这是图像识别的原型模型,我们不再深入探讨。
当小黄人发现了神奇小屋交换香蕉的规律后,非常非常高兴。它又找来了好多苹果,准备和神奇小屋交换香蕉。可是生活就是这样。在你最得意的时候,往往会给你浇一盆凉水。
(注,这里将之前的数据集调整了一下,由x=1,5,6改为x=1,2,3。方便画图啦)
小黄人又尝试给神奇小屋4个和5个苹果,结果分别得到9个和10个香蕉。似乎哪里有点不对??!如果按照之前发现的规律,应该分别得到12和20个香蕉呀。小黄人,百思不得其解。
这时,神奇小屋吐出来一张纸条,上面写着:如果你扔进来的苹果太多,我给你的香蕉将会减少。小黄人,有点郁闷。
如果按照之前一元函数的方式建模,将会得到如下函数模型。
你可能比小黄人聪明多了,一眼就看出来上面的模型函数好像不太合适。损失函数永远取不到最小值0。
如果模型函数是这样就好了,那么对应的损失函数值将会取到最小值0。可是,这好像是两个模型函数。一山不容二虎,能不能将这两个函数合成一个函数。
这时,你又脱口而出,分段函数!!事实证明,你的智商已经达到高中生水平。
当 x < 3 时,s1 等于1,s2 等于0,函数 y = 4x - 4;
当 x >= 3 时,s1 等于0,s2 等于1,函数 y=1x + 5;
这才是完美的组合函数。
那么,问题又来了。s1和s2是什么?怎么确定?
如果把s2看成函数,那么理想情况下,应该是这样的阶跃函数。
然而阶跃函数具有不连续、不光滑等不太好的性质。
这时,小黄人悠悠地说,我好像见过一个跟这个函数有点像的连续函数,叫Sigmoid函数。
看到这个Sigmoid函数后,你很生气。对着小黄人说:人笨就少说话,这个函数和阶跃函数,哪里相像了,差的也太远吧!!怎么看怎么不像。
小黄人:你给变量t一个参数不就行了,改成σ(1000t)。(抠鼻)
如果不仔细看,几乎看不出在纵轴0到1之间,有个非常陡峭的曲线。你顿时无语,对小黄人刮目相看。
当 x = 01 时,s = σ(100) ≈ 1;
当 x = - 01 时,s = σ(100) ≈ 0;
稍微对这个Sigmoid函数做些调整,就能得到我们需要的各种阶跃函数。
这样的话,我们就得到了新的模型函数,y = (4x - 4)σ(-1000x + 3000)+ (1x + 5)σ(1000x - 3000);
如,当 x = 4 时, y = (12) σ(-1000) + (9)σ(1000) = 120 + 91 = 9,与数据集相符。
在这个过程中,小黄人还是有功劳的,提出了激活函数的概念。
下面我们看一下稍微严谨点的逻辑回归定义。
这一句话就够了。在第一节中我们已经学习线性回归模型 y = wx + b。观察图,能够发现,逻辑回归其实就是在线性回归的结果上在再使用一次激活函数 y = σ(wx + b)。线性回归模型 (y = wx + b) 的预测值y可以是一个任意实数{-∞, ∞},而逻辑回归模型 (y = σ(wx + b)) 的预测值y只能是{0, 1}之间的实数。如果能够搞明白线性回归与逻辑回归的联系,说明你已经掌握两者的本质含义。
小黄人想,虽然给的香蕉数量少了些,最起码小屋吐出来的香蕉比扔进去的苹果多嘛。于是,小黄人又尝试向神奇小屋里扔进去了7个和9个苹果。
结果,神奇小屋两次都只返还出来10个香蕉。这下小黄人傻眼了。
虽然小黄人在其他事情上比较笨,但是只要与香蕉相关,它可精明的多。刚刚5个苹果就能换10个香蕉,现在9个苹果才能换10个香蕉!!明显自己吃亏了。但是,它又非常不喜欢吃苹果,只能强忍怨气,攒着一股劲,一定要把里面的规律找出来。
经过之前的套路,机智的你,一定能想到解决办法。
对,就是这样。将数据集分成三块,分别构建线性模型函数,然后利用激活函数,组合起来。
问题再次出现。
当 x < 3 时,s1 = σ(-1000x + 3000) = 1,其他情况为0;
当 x >= 5 时,s3 = σ(1000x - 5000) = 1,其他情况为0;
当 3 <= x < 5 时,s2 = ??
不知道聪明的你有没有注意到,函数 s1 和 s3 都是以 x 作为未知变量。如果我们转换一下思路,将 s2 看成是 s1 和 s3的二元函数。即,s2是否等于1或0,由 s1 和 s2 的值决定。
s2 = σ(-1000s1 - 1000s2 + 500)
虽然得到的香蕉数目不再增加,但是这么复杂的问题都能解决掉(使用线性回归和逻辑回归相结合,对数据集建模),小黄人还是有点小高兴。反正它手里还有些苹果,于是它又尝试向神奇小屋里丢进去了10、11、12个苹果。结果小黄人崩溃了!!
神奇小屋传出来纸条说:做人不能贪得无厌,要见好就收,知足常乐。小黄人崩溃了。现在只留下一个未被解决的难题----怎么对数据集进行建模。
即使你很聪明,似乎也只能解决其中的两步。
取 s1 = σ(-1000x + 3000),即,当 x < 3 时,s1 = 0;
取 s4 = σ(1000x - 9000),即,当 x >= 9 时,s4 = 0;
那么 s1 和 s2 该如何确定?
根据之前的经验,你大致可以确定s1和s2应该由s1和s4的值确定。
后续
假设现在我们有许多数据集,
梳理一下流程
重点来了
免喷声明:本文借鉴(chao xi) 牛津大学xDeepMind 自然语言处理 公开课
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)