机器学习,神经网络基础 --持续更新中

机器学习术语:https://developers.google.com/machine-learning/crash-course/framing/ml-terminology

卷积神经网络的介绍:https://developers.google.com/machine-learning/practica/image-classification/convolutional-neural-networks

卷积的定义包含两个参数

  • Size of the tiles that are extracted (typically 3x3 or 5x5 pixels).
  • The depth of the output feature map, which corresponds to the number of filters that are applied.

1.卷积的特征提取。

2.ReLU

3.Pooling

4.Fully Connected Layers

CNN: 卷积输入向量 通过卷积核进行一定的运算(也叫做滤波器)进行输入的特征提取。

池化层:不影响质量的前提下进行压缩,减少参数,有maxPooling,AveragePooling。

Zero Padding补零操作使输出尺寸不变。

做完池化层之后,数据拍平Flatten层,然后放到全连接层,方便交给分类器进行分类。。。

全连接层:高度提纯特征,把图像变成一个向量,例如最后一层池化之后,输出的图像是20个12x12,通过有100个20x12x12的卷积核的全连接层变成了1x100的向量,

平方损失(L2)损失

1
2
3
= the square of the difference between the label and the prediction
= (observation - prediction(x))2
= (y - y')2

均方误差 (MSE) 指的是每个样本的平均平方损失。要计算 MSE,请求出各个样本的所有平方损失之和,然后除以样本数量:

其中

  • x 指的是模型进行预测时使用的特征集(例如,温度、年龄和交配成功率)。
  • y 指的是样本的标签(例如,每分钟的鸣叫次数)。

  • prediction(x) 指的是权重和偏差与特征集 x 结合的函数。

  • D 指的是包含多个有标签样本(即 (x,y))的数据集。
  • N 指的是 D 中的样本数量

epoch:一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程

batch size :所谓Batch就是每次送入网络中训练的一部分数据,而Batch Size就是每个batch中训练样本的数量

shuffle(洗牌): 在做机器学习的任务时,需要在运行模型之前将特征转化成词id再转化成模型可识别的二进制文件形式,其中转化成的词id文件最好进行shuffle,打乱各行数据,这样参数能不易陷入局部最优,模型能够更容易达到收敛。

正则化:避免过拟合,wccccc好吧 吴恩达老师讲过,我又忘记了,嘤嘤嘤。在保持有所有特征的前提下,减少特征的权重,也就是λ。嘿嘿,在特征多的时候效果很好哦。

引入惩罚项。下面的min是需要优化的误差值

正则化项(complexity),用于衡量模型复杂度

λ是正则化率。λ越大,权值越小,易出现欠拟合。λ越小,权值越大,易出现过拟合

嘤嘤嘤,我终于懂了,妈妈的,嘤嘤嘤

这篇博客的正则化讲的很详细了https://www.cnblogs.com/jianxinzhou/p/4083921.html

妈的,老是记不住线性回归和逻辑回归

在此重申:

线性回归:按照权重和结点值加起来 连续,预测

逻辑回归:在线性回归基础上加了sigmod函数 分类问题,不连续

范数

L0范数是指向量中非0的元素的个数

L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。L1范数是L0范数的最优凸近似

L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象

稀疏矩阵,稠密矩阵:在矩阵中,如果数值为0的元素数目远远多于非0元素的数目,并且非0元素分布无规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。

“神经网络”的所有标准组件:

  • 一组节点,类似于神经元,位于层中。
  • 一组权重,表示每个神经网络层与其下方的层之间的关系。下方的层可能是另一个神经网络层,也可能是其他类型的层。
  • 一组偏差,每个节点一个偏差。
  • 一个激活函数,对层中每个节点的输出进行转换。不同的层可能拥有不同的激活函数。

训练神经网络的最佳做法

https://developers.google.com/machine-learning/crash-course/training-neural-networks/best-practices

卷积神经网络的理解

channel:厚度

下图是3 channel的

卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4.由于只有一个卷积核,所以最终得到的结果为 4×4×1。

channel分类

  1. 最初输入的图片样本的 channels ,取决于图片类型,比如RGB;
  2. 卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels
  3. 卷积核中的 in_channels ,刚刚2中已经说了,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是1中样本图片的 channels

filter:卷积核的数量

下图是两个filter

one_hot独热码,编码形式。encodeing
0,1,2,3,4,5,6,7,8,9 十位数字 用一种独特的形式表示
0:1000000000 1:0100000000 2:0010000000 以此类推

交叉熵:cross_entropy:另一种计算误差的方法,比二次代价函数计算误差要好。误差表达式:!,对w求偏导得到表达式误差越大,梯度就越大,参数w调整得越快,训练速度也就越快

adam优化器:原博客解释 https://www.cnblogs.com/xinchrome/p/4964930.html (讲的还行,勉强理解了)Adam 这个名字来源于 adaptive moment estimation,自适应矩估计。概率论中矩的含义是:如果一个随机变量 X 服从某个分布,X 的一阶矩是 E(X),也就是样本平均值,X 的二阶矩就是 E(X^2),也就是样本平方的平均值。

Adam 算法根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计动态调整针对于每个参数的学习速率。Adam 也是基于梯度下降的方法,但是每次迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定。it does not require stationary objective, works with sparse gradients, naturally performs a form of step size annealing。