目录
Different types of Functions(不同类型的功能)
1. Function with Unknown Parameters
2. Define Loss from Training Data
1. Function with Unknown Parameters
2. Define Loss from Training Data
Different types of Functions(不同类型的功能)
Regression(回归):The function outputs a scalar
Classification(分类): Given options (classes), the function outputs the correct one.
Structured Learning(结构学习):create something with structure (image, document)
机器学习找函数的步骤(以下用youtobe订阅为例子)
1. Function with Unknown Parameters
y = f(Parameters)
在这里我们假设模型为 y=b+wx_1
在这里y的值为2/26预测的观看值,x_1(feature:特征)为2/25的观看值,w(weight:权重)和b(bias:偏差)是未知的参数
2. Define Loss from Training Data
Loss is a function of parameters => L(b,w)
Loss(损失函数): how good a set of values is.
假设L(0.5k,1),则y=b+wx_1=>y=0.5k+1x_1
根据前一天的观看数据,带入模型中,进而获取第二天的观看次数(y),与实际的结果(y ̂)进行一个比对和差距计算(e_n=|y−y ̂|),以此类推。计算得出loss的值。
当然不同情况的e_n的计算也是不同的,通常情况下计算e_n的方法有两种:
当我们尝试了不同的w和b的组合以后,我们就会得到许多关于loss的值,因此我们便可以画出关于w,b和loss的等高线图(Error Surface)。
3.Optimization(最佳化,最优解)
找到一组w和b使得loss的值最小,并将此时w和b的值设置为w*和b*
所以我们利用Gradient Descent(梯度下架)的方法来寻找w和b以及对应的loss最小值。
在Gradient Descent的方法中,我们假设未知数只有一个进而我们便可以得到如下的一个函数图。
首先我们要随机寻找找一个初始的点w_0,其次我们对随机点处的函数进行求导。
如果导数的值是正的那么就减少w的值至w_1,反之(导数的值是负的)就增加w的值至w_1 。从w_0到w_1的距离我们设定为
而这些我们自己设定的东西叫做hyperparameters(超参)。而当导数的值为0时,w_n就不在移动。
回到最初的式子,此时式子中的有两个参数。借鉴于一个参数的情况我们也是随机的取初始的点w
_0和b_0,随后我们对L分别求w和b的偏导数。 ,再不断移动w_n和b_n的位置
从而得到最优的结果。
4.modify(修正)![](https://i-blog.csdnimg.cn/blog_migrate/18968d2095c415b694c7c0ae8041f6b9.png)
在基于以前数据的基础上我们得到了最优的模型解,对于上面的三个步骤我们称之为训练。
但是这个模型对与未来的观看人数的预测到底准确不准确,所以我们要进行计算。
我们可以看到我们利用“最优解”的模型所计算出来的数据与实际的数据存在一定的误差。在观察图像之后,我们发现了一个规律,即每隔一个礼拜一个循环。因此我们根据图像对模型进行一定的修正 ,从而我们的loss的值进一步的减少
而当我们继续修正以后,loss的值也会随之改变。
以上的模型统称为Linear models(线性模型)
机器学习找函数的步骤
1. Function with Unknown Parameters
在线性模型中,x和y的关系仅仅是线性的关系,x越大y也就变大(或变小),而设定不同的w和b仅仅只能更改y的值得大小,而对于x和y的关系则是无法改变。在具体的事件中,我们知道x和y的关系并不一定是线性的,可能会有各种各样不同的关系。因此利用线性模型进行分析便会有许多的限制,我们将这个限制称为Model Bias(模型偏差)。
例如x和y的关系如下图所示
我们认为这一函数的组成是由某个常量加上不同的“蓝色”线性函数的组合
具体组成如下图所示
以此类推,我们可以知道,对于复杂的x与y的关系我们都可以利用这个方法,将许多“蓝色”线性函数组成一个复杂的函数。
当x与y的关系为曲线时,我们也可以利用拆分的方法,在曲线的每一个部分取许多的点,进行一个连线,再利用“蓝色”线性函数无限逼近曲线函数。
我们知道了要用“蓝色”线性函数来组成一个复杂的x与y的关系,那么如何写出“蓝色”线性函数便是我们目前要解决的问题。
在这里我们利用s型曲线来实现对于 “蓝色”线性函数的逼近。通过调整c,b,w的值从而实现。
改变w的值,改变函数的斜率;改变b的值,改变函数的左右位置;改变c的值,改变函数的最大值。
因此上面我们一开始说的x与y的函数关系我们就可以用以下的式子进行一个表示。
讨论完单个特征带入的情况后,我们下面来谈论多个特征带入的情况。由上文的youtobe频道观看人数我们知道了y和x的表达式为
![](https://i-blog.csdnimg.cn/blog_migrate/8dff8cb897716231725f5de643d4b0a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f75a7a566e5493d47b7869c54504cc97.png)
接下来我们队这个式子进行一个进一步的理解。
首先我们来解释一下关于式子中i,j的理解。j代表的是特种的值得数量,也就是说我们将三个数据作为一组。i代表的是 “蓝色”线性函数的个数,我们这里假设也是3个。
我们再来看一下蓝色框内的式子的运算。
我们可以看到其实蓝色框中的式子就是一个简单的求和运算。x_1*w_11+x_2*w_12+x_3*w_13+b_1我们得到了r_1的表达式,以此类推我们可以得到 r_2,r_3的表达式。(注意:w_i_j是权重是常数)
通过利用线性代数我们可以简化r_1,r_2,r_3的式子。
我们简化为x乘以矩阵w再加上向量b得到向量r。
得到 r_1,r_2,r_3以后我们将其带入sigmoid函数中,可以得到
同理a_2,a_3也是一样的结果。
最后我们将a_1*c1+ a_2*c_2+a_3*c_3+b得到总的式子y
简化式子可以得到
注意此处的c_t是行向量,a为列向量(参考矩阵的运算)
因此我们可以得到总的式子
我们将矩阵w,向量b,向量c_t,向量b统称为未知参数
2. Define Loss from Training Data
同理于上面所讲的loss这里我们的loss也是带入未知参数,而此处我们的未知参数为
随后我们带入特征值得到y与现有的y的值进行比较计算得到e的值,计算出总的loss的值
3.Optimization(最佳化,最优解)
最优解的目的在于找出一个,让loss的值最小。我们记这个
为
在这里我们第一步还是先寻找一个初始的(此处我们还是随机选择,以后会有更好的选择方法),我们记为
其次我们利用梯度下降(求偏导)的方法依次求L对于......的偏导(在
处),得到g
简写为
之后我们再对......进行“更新”
简写为
重复上述操作,直到算出来 g为0向量的时候,式子结束。
而在我们实际的计算过程中,我们通常是将数据进行分组,得到一个batch,计算这个batch的g值,再依次计算。
以下是对epoch和update的理解
在上面我们讲到利用sigmoid函数来表示x和y的复杂关系,在这里我们介绍另一种表示的方法,就是利用Rectified Liner Unit(ReLU)来表示。
于是我们在选择表示时就有了一种新的选择。
注:1.因为需要两个ReLU合成一个函数,因此为2i。 2.我们将sigmoid和max函数叫做激活函数(Activation function)
因为本人还在机器学习的初期,因此博客的有些知识点会有一定的差错,还请各位指正,感谢!