认识机器学习:神经网络和卷积神经网络
1.机器学习的学习分类
regression:输出值为一个数值
classification:分类问题(例如 alpha go,在棋盘上 19*19 上的位置进行选择)
structured learning:产生结构输出(例如写文章,图片输出)
2.如何找到函数 how to find a function?
主要可以分为三个部分
1.写出一个带有未知参数的函数(猜测函数与哪些自变量存在关系)
2.定义loss(输入为上个 model 中的参数)loss 则代表机器学习模型的质量
3.optimization,找出最适合的参数,来使我们的 loss 值最小
gradient descent(梯度下降)
使用梯度方法来获得最低 loss,对应高数中求一阶导获得函数极值点,hyperparameters 对应参数变化的步长,因为 loss 并不是一个平滑的曲线,而是由一个个画成的,所以如果步长取得过大,可能会错过极值点。(会存在 local minima 的问题)

显然,线性的模型不足以表达非常复杂的关系,所以我们引入 sigmoid 函数,将任何连续的曲线,分解成 piecewise linear 的曲线,然后用 sigmoid 函数进行表示。w 会改变斜坡的坡度,b 会将函数左右移动,c 更改高度

1epoch = see all batch once
每一个 batch 计算之后,便会更新一次参数(梯度下降)
由 sigmoid 函数可以得出 relu 函数,relu 和 sigmoid 都成为 activate function(激活函数)
以上称为神经网络(思考,为什么在神经网络算法中,增加 layer 提升正确率,而不选择提高 relu 函数的数量来提升正确率)
在训练复杂模型时,optimization 会更加复杂,难以找到更适合的函数,所在在训练不熟悉的模型时,可以用简单的(更容易optimize 的模型)去尝试。
overfitting(过拟合)特点:训练集上 loss 很低,测试集上 loss 很高
训练得到的模型需要在 public test set 和 private test set 上都需要得到较好的结果,public test 上较好的loss 没有意义,所以在调整模型时,不需要特别纠结和参考 public test,理想上使用 validation set 进行调整会更合适
万一运气不好,我们的测试集和训练集分布非常不一样怎么办?则可以使用N-fold cross validation 将已有数据分为三个部分交叉进行训练和验证
mismatch:训练资料和测试资料不匹配,所以会导致训练 loss 和测试 loss 相差较大
4. 卷积神经网络
卷积神经网络多用来处理图片信息,所以我们先从基本的图片处理入手。
假设我们现在处理的图片像素为 100✖️100,一般的的图片都具有 RGB 三个通道,所以这个图像是一个 100✖️100✖️3 的向量。
如果我们使用神经网络学习,每个节点都会历遍图片中的每一个像素,从而学习整个图片的特征。可是我们思考,如果对一张图片进行识别,例如识别一张图片中的动物,其实大部分像素都是无用的背景,将这些背景像素对节点进行连接,会产生非常多无用噪声信号。我们仅仅需要提取的是动物的特征(这部分在图片中占比很小),所以我们可以将图片分割成一个一个小部分,每个节点只需要管理一个小部分位置的特征,这样某些节点可以处理到识别动物的关键轮廓。我们分割的图片大小,被称为 kernel size,stride 是每个被切割图像的距离。
parameter sharing(参数共享):例如两个节点,都是对动物的眼睛进行检测,但是一个在左上角,一个在右上角,我们可以让他们参数共享,即每个像素点的权重参数共享,从而减少数据量。

更多推荐



所有评论(0)