了解线性模型
话说在通过案例学习机器学习那里,目前学到了通过梯度下降优化找到模型y=wx+b中的w 和b,并计算了损失。
指标定义
线性模型:把输入的特征x乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型。
模型的偏差:来自于模型的限制称为模型的偏差,无法模拟真实的情况。
训练数据:用于模型的学习和参数优化的数据集。它包含大量已知输入(特征)和输出(标签)的样本,模型通过观察这些样本来学习数据的模式和特征。通过训练集,模型不断调整其参数和权重,以逐渐提高对输入数据的预测能力。
测试集:用于最终评估模型的性能。测试集是一个完全独立于训练过程的数据集。评估模型在未见过的数据上的表现。
过拟合:模型在训练集上学习得太好,以至于学到了训练数据中得噪声和细节,导致模型泛化能力差,即模型在训练集和测试集得表现不一致。
激活函数:激活函数的主要作用包括引入非线性、控制输出范围、提供梯度信息、改善梯度流动、提高训练速度和处理不同类型的数据。如果正确的选择激活函数可以显著提升模型的性能和训练效率。
引入非线性:激活函数将线性变换后的结果转换为非线性输出,这使得模型可以学习和表示复杂的模式和关系。没有激活函数,模型的每一层都是线性的组合,多个线性层的组合仍然是线性的,无法解决复杂的非线性问题。
允许学习复杂函数:通过引入非线性,激活函数使得模型可以近似任意复杂的函数。
控制输出范围:不同的激活函数将输出值限制在不同的单位内。
提供梯度信息:激活函数的导数(梯度)用于反向传播过程中更新权重。激活函数选择不当可能导致梯度消失或爆炸,影响模型训练的效率和效果。
改善梯度流动:一些激活函数,能够有效地缓解梯度消失问题,使得梯度在网络中更好地传播。
提高模型训练速度:选择合适的激活函数可以加速模型的收敛速度。
处理不同类型的数据:激活函数的不同特性使得它们适用于不同类型的数据和任务。
Sigmoid 函数
Sigmoid函数是一种S形曲线,能够将任意实数输入映射到0到1之间。
这使得它特别适合处理概率问题,尤其是在二分类问题中。
数学公式:
σ
(
x
)
=
1
1
+
e
−
x
σ(x)=\frac{1}{1+e^{-x}}
σ(x)=1+e−x1
函数的导数为:
σ
(
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
)
σ^(x)=σ(x)(1-σ(x))
σ(x)=σ(x)(1−σ(x))
由于在极端输入情况下,Sigmoid的输出接近于0或1,这导致导数非常小,可能引发梯度消失问题。
优点:输出范围在0到1之间,非常适合处理概率问题。 平滑且连续,导数易于计算。
缺点:梯度消失问题:在极端输入下梯度趋近于零,导致学习速度减慢。
非零均值输出:输出非中心化(不是零均值),这会影响梯度的传播。
ReLU激活函数
ReLU是一种非常简单的非线性激活函数,它将所有负值输入映射为0,而正值输入保持不变。
由于其线性特性,ReLU的导数为1(正数部分)或0(负数部分),这使得梯度传播更加高效。
数学公式:
R
e
L
U
(
x
)
=
m
a
x
(
0
,
x
)
ReLU(x)=max(0,x)
ReLU(x)=max(0,x)
优点:计算简单,效率高。能有效缓解梯度消失问题。
缺点:一些神经元可能永远不会被激活(输入始终为负),这会导致这些神经元对模型无用。
机器学习框架
首先有一堆训练的数据以及测试数据
训练数据:{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
.
.
,
(
x
N
,
y
N
)
(x^{1},y^{1}),(x^{2},y^{2}),......,(x^{N},y^{N})
(x1,y1),(x2,y2),......,(xN,yN)}
测试数据:{
x
N
+
1
,
x
N
+
2
,
.
.
.
.
.
.
,
x
N
+
M
x^{N+1},x^{N+2},......,x^{N+M}
xN+1,xN+2,......,xN+M}
1、先写出一个有未知数θ的函数,θ代表一个模型里面所有的未知参数。
f
θ
(
x
)
f_θ(x)
fθ(x)的意思就是函数叫
f
θ
(
x
)
f_θ(x)
fθ(x),输入的特征为x;
2、定义损失,损失是一个函数,其输入就是一组参数,去判断这一组参数的好坏;
3、解一个优化的问题,找一个θ,该θ可以让损失的值越小越好。让损失最小的θ为
θ
∗
θ^{*}
θ∗,即
θ
∗
=
a
r
g
θ
m
i
n
L
θ^{*}=arg_θminL
θ∗=argθminL
有了
θ
∗
θ^{*}
θ∗后,就把它拿来用在测试集上。