【Datawhale X 李宏毅苹果书 AI夏令营】深度学习详解笔记 1.2

第 1 章 机器学习基础

1.2 线性模型

把输入的特征 xi 乘上一个权重 wi,再加上一个偏置 b 就得到预测的结果,这样的模型称为线性模型(linear model)

e.g. 根据前七天的观看数据推测接下来的观看数据,模型为:

y=b+j=17wjxj

1.2.1 分段线性曲线

(1)模型

线性模型有很大的限制,这一种来自于模型的限制称为模型的偏差,无法模拟真实的情况。比如线性模型无法拟合分段线性曲线。

所以需要添加一些更复杂的、更有灵活性的、有未知参数的函数。可以用一个常数再加上一群 Hard Sigmoid 函数表示分段线性曲线。Hard Sigmoid 函数是直线组成的分段函数,特性是先水平,再斜坡,再水平。

直接写 Hard Sigmoid 有时不是很容易,但是可以用 Sigmoid 函数来逼近 Hard Sigmoid。

Sigmoid 函数 是一个映射 σ:R(0,1)。表达式是:

σ(x)=11+ex

一般采用这样的变形来制造各种不同形状的 Sigmoid 函数:

y=cσ(b+wx1)=c1+e(b+wx1)

此外,我们可以不只用一个特征,可以用多个特征代入不同的 c,b,w,组合出各种不同的函数,从而得到更有 灵活性(flexibility) 的函数。

如果采用 n 个特征,模型可以表示为:

y=b+i=1nciσ(bi+j=1nwijxj)

写成向量矩阵形式:

y=b+cTσ(b+Wx)

n=3 时的计算过程:

分段曲线可以逼近任何连续曲线。

(2)损失

直接用向量 θ 来统设所有的参数,所以损失函数就变成 L(θ)

把一种特征 x 代进去,得到估测出来的 y^,再计算一下跟真实的标签之间的误差 e。把所有的误差通通加起来,就得到损失。

(3)优化

对向量 θ 做梯度下降即可,每次按照如下式子更新:

θn+1=θnηL|θ=θn

实际使用梯度下降的时候,会把 N 笔数据随机分成一个一个的批量(batch)。拿一个个批量算出来的 L1, L2, L3 来计算梯度。把所有的批量都看过一次,称为一个回合(epoch),每一次更新参数叫做一次更新。

1.2.2 模型变形

HardSigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加总。

ReLU 的特征是先平后斜,解析式可表示为:

y=cmax(0,b+wx1)

在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。激活函数为模型引入非线性因素,从而能够学习非线性的关系。

深度学习中,模型中的激活函数称为神经元(neuron),很多的神经元称为神经网络(neural network)。神经网络内部的每一层,称为隐藏层(hiddenlayer),很多的隐藏层就“深”,人们把神经网络越叠越多越叠越深,这套技术称为深度学习

训练数据和测试数据上的准确率结果不一致,且模型越复杂可能偏差越大,这种情况称为过拟合(overfitting)。深度学习的训练会用到反向传播(BackPropagation,BP),其实它就是比较有效率、算梯度的方法。

1.2.3 机器学习框架

一开始,我们会收集到一堆训练的数据以及测试数据。

训练的过程是 3 个步骤。

  1. 确定模型。先写出一个有未知数 θ 的函数,θ 代表一个模型里面所有的未知参数。模型 fθ(x) 的意思就是函数叫 fθ(x),输入的特征为 x
  2. 定义损失。损失 L(θ) 是一个函数,其输入就是一组参数,去判断这一组参数的好坏;
  3. 最优化模型。解一个优化的问题,找一个 θ,该 θ 可以让损失 L(θ) 的值越小越好。让损失的值最小的 θθ

有了 θ 以后,就把它拿来用在测试集上。将模型 fθ(x) 里面未知的参数 θθ 来取代,输入是测试集,输出的结果存起来,上传到 Kaggle 就结束了。

posted @   Coinred  阅读(17)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示

目录导航