【自学深度学习梳理1】机器学习基础

一、机器学习介绍

机器学习的定义

机器学习就是让机器具备找一个函数的能力。

机器学习的类型

机器要预测未来的数值,要找的函数输出是一个数值,一个标量(scalar),找这个函数的任务称为回归(regression)

机器做选择题,要找的函数是从预先准备好的一些选项(类别class)中选择一个当作输出,该任务称为分类(classification)

机器学习找函数的过程

第一步:写出一共带有未知参数的函数 f f f
y = w x + b y=wx+b y=wx+b
y是准备要预测的东西。
模型:带有未知参数的函数。

权重w、偏置b:未知的参数。
特征x:函数里面已知的。

第二步:定义损失函数loss
损失函数的输入为一组未知参数w和b,输出的值代表这组参数的好坏,值越大代表参数越不好。
L ( b , w ) = 1 N ∑ n e n L(b,w)=\frac{1}{N}\sum_n e_n L(b,w)=N1nen
其中,N代表训练数据的个数, e e e表示每笔数据的误差。

预测值与实际值之间的差距(误差),有不同的计算方法:
平均绝对误差MAE e = ∣ y ^ − y ∣ e=|\hat{y}-y| e=y^y
均方误差MSE e = ( y ^ − y ) 2 e=(\hat{y}-y)^2 e=(y^y)2
二元交叉熵BCE: e = − y log ⁡ y ^ − ( 1 − y ) log ⁡ ( 1 − y ^ ) e=-y\log{\hat{y}}-(1-y)\log{(1-\hat y)} e=ylogy^(1y)log(1y^)

第三步:解一个最优化的问题
找到一组最优参数w和b使得损失L值最小。
常用的优化方法——梯度下降(gradient descent)
更新参数,总是向着梯度下降最快的地方走。
w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^1←w^0-\eta\frac{\partial L}{\partial w}|_{w=w^0,b=b^0} w1w0ηwLw=w0,b=b0

b 1 ← b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^1←b^0-\eta\frac{\partial L}{\partial b}|_{w=w^0,b=b^0} b1b0ηbLw=w0,b=b0

学习率——   η \ \eta  η,也叫步长,决定每步迈的大小
通常设置为0.001 [0.003]、0.01 [0.03]、0.1 [0.3]、1…
学习率过大,会跳过最低点,可能不收敛。
学习率过小,参数更新很慢,收敛速度过慢。

二、线性模型(linear model)

把输入的特征x乘上一个权重,再加上一个偏置就得到预测的结果。
y = ∑ i = 1 n w i x i + b y=\sum_{i=1}^{n}w_ix_i+b y=i=1nwixi+b

线性模型存在的问题: 无论如何改变w和b,线性组合还是线性, x 1 x_1 x1 y y y的关系永远都是一条直线。
模型的偏差:模型有很大的限制。

分段线性曲线

对于图中红色的分段线性曲线,使用线性模型是没有办法拟合的。可以使用不同的蓝色函数(把 0+1+2+3 全部加起来),加上一个常数以后就可以得到完整红色的线。
在这里插入图片描述

可以用分段线性曲线去逼近任何的连续的曲线,而每个分段线性曲线都可以用一大堆蓝色的函数(Hard Sigmoid)组合起来。
在这里插入图片描述

直接使用蓝色曲线Hard Sigmoid不方便,Hard Sigmoid函数可以用平滑的sigmoid(Soft Sigmoid)函数来逼近。
sigmoid函数表达式: y = c 1 1 + e − ( b + w x 1 ) y=c \frac{1}{1+e^{-(b+wx_1)}} y=c1+e(b+wx1)1,其中c为常数。
简写为, y = c σ ( b + w x 1 ) y=c\sigma(b+wx_1) y=cσ(b+wx1) σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1

在这里插入图片描述

拟合分段线性曲线:i取值1,2,3代表下图的3条蓝线。 y = b + ∑ i c i σ ( b i + w i x 1 ) y=b+ \sum_{i} c_i\sigma(b_i+w_ix_1) y=b+iciσ(bi+wix1)
在这里插入图片描述

更灵活通用的函数: y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y=b+\sum_ic_i sigmoid(b_i+\sum_jw_{ij}x_j) y=b+icisigmoid(bi+jwijxj)

在这里插入图片描述

激活函数

激活函数的作用是引入非线性因素,使得神经网络能够学习和模拟复杂的、非线性的输入输出关系。没有激活函数,神经网络将只能学习到线性关系,这极大地限制了其应用范围和学习能力。
Hard Sigmoid还可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的组合。
常用的激活函数:ReLU(最常用),Sigmoid。
在这里插入图片描述
2个ReLU 才能够合成一个 Hard Sigmoid。要合成 i 个 Hard Sigmoid,
需要 i 个 Sigmoid,如果 ReLU 要做到一样的事情,则需要 2i 个 ReLU,因为 2 个 ReLU 合起来才是一个 Hard Sigmoid。
在这里插入图片描述

深度学习的模型结构,包括输入层、隐藏层以及输出层。
在这里插入图片描述

三、实践方法论

如何更好的训练模型,模型训练结果不好的原因分析。

1、模型偏差

来自于模型的限制:选用的模型不够灵活,比如模型太简单了。
表现:训练损失较大。
解决方法:①增加特征数 ②换更大的模型。
海底捞针,海里没有针。

2、优化问题

网络灵活性是够的,优化做的不够好。
一般用梯度下降进行优化。
梯度下降存在的问题:卡在局部最小值、无法找到一组真的可以让损失很低的参数。
表现:训练损失较大。
如果深的模型跟浅的模型比起来,深的模型明明灵活性比较大,但损失却没有办法比浅的模型压得更低代表说优化有问题,梯度下降不给力,因此要有一些其它的方法来更好地进行优化。
解决方法:换其他优化器,梯度下降过程中加入动量等等。下一篇详细介绍。
海底捞针,海里有针,但无法把针捞出来。

在这里插入图片描述

3、过拟合

表现:在训练集上表现很好 损失小,但到了测试集上表现较差 损失大。
解决办法:
①增加训练数据(最有效的方法) [做数据增强]
②约束模型:较少的参数、更少的特征、早停 正则化 丢弃法DropOut

4、交叉验证

评估模型好坏,选择模型。
k折交叉验证(k-fold cross validation)
①将数据集D随机划分为k个大小相同且互斥的子集;
②每次随机挑选k-1份作为训练集,剩下一份作为验证集;
③重复进行k次,遍历完所有情况;
④得到k个模型,k个验证误差,对k次误差取平均得到一个交叉验证误差,选择最小误差的模型。

在这里插入图片描述

5、不匹配

训练集与测试集数据分布不同,也称协变量偏移。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值