机器学习-假设函数、损失函数、优化函数

假设函数

假设函数就是假设某一个函数可以代表大多数数据的分布。这个函数的参数是未知的,而不同的参数所得到的假设函数是不同的。
模型参数与假设函数之间的关系:参数设定的不同,直接导致假设函数的不同。

损失函数(loss function)

损失函数也称代价函数,是描述假设函数在不同参数值下的损失。损失函数最终作为模型建立的学习准则和优化问题,通常将损失函数用来判断模型预测出来的结果与实际值的差距程度。

优化函数

优化函数对损失函数进行优化,寻找最优参数。
优化损失函数的方式有很多种,常用到的是最小二乘梯度下降

  • 最小二乘法(Ordinary Least Square)

最小二乘法是通过最小化误差的平方和来寻找数据的最佳函数(即最佳参数)并与之匹配。最小二乘法是用数学公式直接求解线性回归方程的参数的方法。

一元线性回归方程

以最简单的一元线性回归( y = x + b y = x+b y=x+b)为例,一元线性回归可以看成Y的值随着X的改变而改变,每个X都对应一个Y,每个X都可通过公式计算出一个预测值 Y ′ Y' Y(公式2),需要做的就是让所有的预测值 Y ′ Y' Y与真实值Y之间的误差(即 ∑ k = 1 n ( Y − Y ′ ) \sum_{k = 1} ^n (Y-Y') k=1n(YY))最小

[ Y 1 ′ Y 2 ′ Y 3 ′ ⋅ ⋅ ⋅ Y n ] = c [ X 1 X 2 X 3 ⋅ ⋅ ⋅ X n ] + b (2) \begin{matrix} \\ \left[ \begin{matrix} Y_1' \\ Y_2' \\ Y_3' \\ · \\ · \\ · \\ Y_n \end{matrix} \right] = c \left[ \begin{matrix} X_1 \\ X_2 \\ X_3 \\ · \\ · \\ · \\ X_n \end{matrix} \right] \tag{2} +b \end{matrix} Y1Y2Y3Yn=cX1X2X3Xn+b(2)
公式2中一系列的X值可以求出一系列的预测值Y’,目的是使得每一对预测的Y’和Y之间的误差(Y- Y’)最小化。由于误差有正误差有负误差,为了避免彼此抵消,需要使用误差的平方来衡量。虽然绝对值也可以避免误差抵消,但是绝对值的代数计算性不如平方好,不便于求微分。二乘表示平方,最小二乘法就表示求误差平方和最小的方法。所以总误差公式如下:
E = ∑ k = 1 n ( Y − Y ′ ) 2 = ∑ k = 1 n ( Y k − c X k + b ) 2 ) (3) E = \sum_{k=1}^n(Y-Y')^2 = \sum_{k=1}^n(Y_k-cX_k+b)^2\tag3) E=k=1n(YY)2=k=1n(YkcXk+b)2)(3)
公式3中,E表示总误差;n表示有n个数据点;k表示数据点的下标;Y真实值; Y ′ Y' Y预测值;c和b是使得E最小的最优参数。
对公式3进行微积分,E最小化时E对c和E对b的偏微分要等于0。

∂ E ∂ c = ∂ E ∂ b = 0 ∂ E ∂ c = ∑ k = 1 n 2 × ( Y k − c X k − b ) ( − X k ) = 0 ∂ E ∂ b = ∑ k = 1 n 2 × ( Y k − c X k − b ) ( − 1 ) = 0 用 这 两 个 公 式 分 别 得 到 一 个 二 元 一 次 方 程 ∑ k = 1 n X k Y k = c × ∑ k = 1 n X k 2 + b × ∑ k = 1 n X k ∑ k = 1 n Y k = c × ∑ k = 1 n X k + n × b 对 上 面 的 方 程 组 进 行 求 解 得 b = ∑ k = 1 n Y k − c × ∑ k = 1 n X k n = Y ‾ − c X ‾ c = ∑ k = 1 n ( X k − X ‾ ) ( Y k − Y ‾ ) ∑ k = 1 n ( X k − X ‾ ) 2 \frac{\partial E}{\partial c} = \frac{\partial E}{\partial b} = 0 \\ \frac{\partial E}{\partial c} = \sum_{k=1}^n2×(Y_k-cX_k-b)(-X_k) = 0 \\ \frac{\partial E}{\partial b} = \sum_{k=1}^n2×(Y_k-cX_k-b)(-1) = 0 \\ 用这两个公式分别得到一个二元一次方程 \\ \sum_{k=1}^nX_kY_k = c × \sum_{k=1}^nX_k^2 + b× \sum_{k=1}^nX_k \\ \sum_{k=1}^nY_k = c × \sum_{k=1}^nX_k + n×b \\ 对上面的方程组进行求解得 \\ b = \frac{\sum_{k=1}^nY_k - c×\sum_{k=1}^nX_k}{n} = \overline{Y} - c \overline{X} \\ c = \frac{\sum_{k=1}^n(X_k - \overline{X})(Y_k - \overline{Y})}{ \sum_{k=1}^n(X_k - \overline{X} )^2} cE=bE=0cE=k=1n2×(YkcXkb)(Xk)=0bE=k=1n2×(YkcXkb)(1)=0k=1nXkYk=c×k=1nXk2+b×k=1nXkk=1nYk=c×k=1nXk+n×bb=nk=1nYkc×k=1nXk=YcXc=k=1n(XkX)2k=1n(XkX)(YkY)
X ‾ \overline{X} X Y ‾ \overline{Y} Y表示平均值,

  • 梯度下降

也称为最快下降法,假设从任意某一点出发,需要最快搜索到函数的最大值,也就是从函数变化最快(即梯度下降最快的方向)的方法搜索。

多元线性回归方程

多个自变量X与因变量Y之间存在线性相关关系。
公式如下 Y = c 1 X 1 + c 2 X 2 + c 3 X 3 + … + c n X n + b Y = c_1X_1 + c_2X_2 + c_3X_3 + \ldots + c_nX_n + b Y=c1X1+c2X2+c3X3++cnXn+b
简写为 Y = ∑ i = 1 n c i X i + b Y=\sum_{i=1}^nc_iX_i+b Y=i=1nciXi+b
用矩阵表示为:
[ Y 1 ′ Y 2 ′ Y 3 ′ … Y n ] = [ c 1 ′ c 2 ′ c 3 ′ … c n ] × [ 1 X 11 X 12 … X 1 n 1 X 21 X 22 … X 2 n 1 X 31 X 32 … X 3 n … … … … 1 X n 1 X n 2 … X n n ] \begin{matrix} \\ \left[ \begin{matrix} Y_1' \\ Y_2' \\ Y_3' \\ \ldots \\ Y_n \end{matrix} \right] = \left[ \begin{matrix} c_1' \\ c_2' \\ c_3' \\ \ldots \\ c_n \end{matrix} \right] × \left[ \begin{matrix} 1& X_{11} & X_{12} \ldots & X_{1n} \\ 1& X_{21} & X_{22} \ldots & X_{2n} \\ 1& X_{31} & X_{32} \ldots & X_{3n}\\ \ldots & \ldots & \ldots& \ldots \\ 1& X_{n1} & X_{n2} \ldots & X_{nn} \end{matrix} \right] \end{matrix} Y1Y2Y3Yn=c1c2c3cn×1111X11X21X31Xn1X12X22X32Xn2X1nX2nX3nXnn
简写为 Y ′ = X C \bf{Y' } = \bf{X C} Y=XC,其中 Y ′ \bf Y' Y X \bf X X C \bf C C都表示矩阵
同样是对真实值与预测值误差的平方和求最小值,可以得到回归系数矩阵 C \bf C C
C = ( X T X ) − 1 X T Y \bf C = (X^TX)^{-1}X^TY C=(XTX)1XTY
需要注意的是,上式中设计对 X T X X^TX XTX矩阵求逆,因此之恩给你在逆矩阵存在的时候使用,当这个矩阵不存在的时候,不能使用最小二乘法求解。但是即使存在逆矩阵,对于一个高阶矩阵求逆的代价也是非常昂贵的,一般情况下,一个n矩阵求逆的时间复杂度大约为 O ( n 3 ) O(n^3) O(n3),使用分治法可以缩短到 O ( n 2.18 ) O(n^{2.18}) O(n2.18)。可以想象,当自变量的个数增加到一定程度后(在深度学习中参数常会上万),最小二乘法求回归系数矩阵就不再可行。因此,对于多元线性回归常常使用梯度下降法来求解。
再微积分中,在多元函数的参数求偏导,把求得的参数的偏导数以向量的形式写出来,就是梯度。如函数 f ( x , y ) f(x,y) f(x,y),分别对x,y求偏导数,求得的梯度向量就是 ( ∂ f ∂ x , ∂ f ∂ y ) T (\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})^T (xf,yf)T,简称 g r a n d f ( x , y ) 或 ∇ f ( x , y ) grand f(x,y)或\nabla f(x,y) grandf(x,y)f(x,y)。点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)的具体梯度向量就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T 或 者 ∇ f ( x 0 , y 0 ) (\frac{\partial f}{\partial x_0},\frac{\partial f}{\partial y_0})^T或者\nabla f(x_0,y_0) (x0f,y0f)Tf(x0,y0),如果是3个参数的梯度向量,就是 ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ) T (\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z})^T (xf,yf,zf)T,依此类推。

梯度向量的几何意义就是函数变化增加最快的地方。具体来说,对于函数 f ( x , y ) f(x,y) f(x,y)在点 ( x 0 , y 0 ) (x_0, y_0) (x0,y0),沿着梯度向量的方向就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T (\frac{\partial f}{\partial x_0},\frac{\partial f}{\partial y_0})^T (x0f,y0f)T的方向是 f ( x , y ) f(x, y) f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反之,沿着梯度向量相反的方向,也就是 − ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T -(\frac{\partial f}{\partial x_0},\frac{\partial f}{\partial y_0})^T (x0f,y0f)T的方向,就更加容易找到函数的最小值。 因此,梯度向量可以指引用迭代的方式找到误差平方的最小值,以及这个最小值所对应的回归参数。

下图显示了梯度下降法的迭代过程, J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)是一个有两个自变量的函数,与一元线性回归中的误差平方和函数类似该函数也有b和c两个变量。超过两个的变量,在数据上的处理类似,只是无法像只有两个函数那样直观用图形表示出来。我们的目的是从图上的任意点出发,找到函数的最小值,即误差平方和最小的点,得到这个点对应的两个自变量(图中 θ 0 , θ 1 , 就 是 一 元 线 性 回 归 方 程 中 的 b 和 c \theta_0,\theta_1,就是一元线性回归方程中的b和c θ0,θ1线bc),即为求解的回归参数。
在这里插入图片描述

假设的起始点在误差平方和的最大值处,计算该点的梯度,梯度的负方向集误差和下降最快的方向,然后参数b和c移动固定的距离(步长),到第二个画x的点,再次计算这个点的梯度,得到另一个方向,继续移动,这个过程一直迭代至梯度为0(实践中是一个非常小的数,不会正好是0)即为函数的最小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值