淘先锋技术网

首页 1 2 3 4 5 6 7

机器学习(ML)

机器学习大致分为三个步骤:

  1. 写出一个含有未知数(参数)的函数,一般来说这个函数是用来估计真实值的
  2. 定义一个Loss Function,代入训练样本,输出与真实值的误差Loss
  3. 优化,找到一组参数,使得Loss的值最小

在这里插入图片描述

深度学习(DL)

Q:如何找到一个函数取拟合任意的分段线性曲线(Piecewise Linear Curves)?
在这里插入图片描述
我们用sigmoid函数去代替上图的类S型折线
在这里插入图片描述
然后我们可以通过改变sigmoid function里面的w、b、c来分别使函数有不同的斜率、或者平移、或者高度,这样我们就可以用一组sigmoid函数来拟合任一的分段曲线了。
在这里插入图片描述

代数式的表达即:
y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y=b+\sum_i c_i sigmoid(b_i+w_ix_1) y=b+icisigmoid(bi+wix1)当然这里面只有一个特征 x 1 x_1 x1,我们可以有更多的特征(feature),这是一个更高维的输入,我们没法直观显示出来
注:现在我还不知道为什么需要更多的特征,但我们可以凭经验感觉出来,比如你只知道一个东西的大小,你很难判断这是什么,但如果你还知道它的形状、气味、重量,你就更容易判断出来那是什么
在这里插入图片描述
上图的式子在代数式里面的表达为:
在这里插入图片描述
下面,我们再把拟合的过程用形象的图画出来:
在这里插入图片描述
机器学习的第一步已经完成了,我们已经找到了需要的函数,下面需要定义一个Loss
在这里插入图片描述
上图中的 e n e_n en可以为 ∣ y ′ − y ∣ |y'-y| yy或者为 ( y ′ − y ) 2 (y'-y)^2 (yy)2等等都可以,只要能反映出估计值和label的真实值之间的误差即可,n是所有的training data,我们需要计算它们的误差和。
那么第二步也完成了,下面需要找到参数使得Loss最小了,一般采用梯度下降法求解,注意:这个函数里面W和b都是未知的参数,我们要算出所有的这些值,下图将它们统一表示为 θ \theta θ
在这里插入图片描述
上图的偏导数如何求解,首先和我们定义的Loss Function有关,齐次我们可以用各种方法求解,最有名的当然是back propagation
我们可以把数据拆分成一个个batch,每个batch代入都更新一次theta,所有的batch都更新一次叫一个epoch,我认为这么干可能是数据太多,一次处理计算量太大,所以把它们打乱然后分成一个个小一点的batch来计算,可以加快计算速度,同时随机打乱一般也不会影响结果
在这里插入图片描述
同时,由于我们的算力提升,我们可以将上面的 σ ( b + W X ) \sigma(b+WX) σ(b+WX)输出的值替换成新的 X X X代入左边的式子,再不断重复这个过程,最后输出结果(我也不知道这么做的道理在哪,反正大家都这么干,结果也很好),由于叠加了很多层,我们就叫它deep learning,当然neural network和这个一样,就换了个名字
在这里插入图片描述
下图估计是以前有各个大佬做的网络结构,然后再ImageNet上面跑的结果,反正就是buff越叠越多
在这里插入图片描述


小结

以上都是自己现在小白的肤浅理解,以后进一步学习之后还会回来修改,具体视频讲解可以点击这里

下面我提出自己的一些问题给未来的我:
Q1:如果输出函数是多维的,即多分类问题,为什么DL也有用?
Q2:对于任意的Piecewise Linear Curves,一个特征值我们可以用一组sigmoid拟合,为什么多个特征值我们也能拟合?如果是多个特征值一个sigmoid,相当于是Logistic Regression,也可以拟合这个曲线吗?哪个效果更好一点?
Q3:为什么DL的层数越多结果越精确?