【ML&DL】0 如何理解手写数字识别网络

ML目标

从数据中学习到一些高层次的抽象的一些概念,这样的话,对于一个新数据x,也能预测出比较符合实际情况的y。
而自然界的y往往有两种:离散和连续。

连续值预测:

【ML&DL】0 如何理解手写数字识别网络
线性方程:
【ML&DL】0 如何理解手写数字识别网络
可以求出w和b精确解,但是在现实生活中,我们不能精确求解,1是生活中的模型是未知的,2是有噪声。
【ML&DL】0 如何理解手写数字识别网络
需要更多的参数才能求出w和b的值。
如何更好的求解w和b参数呢?
构造一个新的损失函数loos function
【ML&DL】0 如何理解手写数字识别网络
Minimize 的方法:
梯度下降法
【ML&DL】0 如何理解手写数字识别网络
如果要求一个函数的极小值,对于任意的x(随机初始化),沿着函数导数方向(使函数值增大的方向)的负方向更新,其中导数前面的0.005是衰减因子(学习率),即前进的长度是导数的长度乘以一个衰减因子,慢慢逼近极小值点。
【ML&DL】0 如何理解手写数字识别网络
对于一个函数,总可以更新到极小值点的函数,叫做凸函数。

连续值预测,采用的线性模型,叫做线性回归(linear regression)。如果对应二分类问题,用了**函数的,叫做逻辑回归(logistic regression)。
而离散值,采用classification方法求解,有一个多分类的问题。

下面介绍线性回归问题的求解步骤(使用numpy)
【ML&DL】0 如何理解手写数字识别网络
因为求出来的loss可能非常大,所以可以除以一个N。
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
循环更新w和b参数。
【ML&DL】0 如何理解手写数字识别网络

离散值预测

图片分类
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
手写数字识别是图片分类一个很简单的任务,目的是希望机器可以自动识别处理图片中的数字。包含0-9的不同风格的数字图片。
【ML&DL】0 如何理解手写数字识别网络
在人工智能研究领域,Yann LeCun、Geoffrey Hinton 和 Yoshua Bengio一直被公认为深度学习三巨头。

Yann LeCun,自称中文名“杨立昆”,计算机科学家,被誉为“卷积网络之父”,为卷积神经网络(CNN,Convolutional Neural Networks)和图像识别领域做出了重要贡献,以手写字体识别、图像压缩和人工智能硬件等主题发表过 190 多份论文,研发了很多关于深度学习的项目,并且拥有14项相关的美国专利。他同Léon Bottou和Patrick Haffner等人一起创建了DjVu图像压缩技术,同Léon Bottou一起开发了一种开源的Lush语言,比Matlab功能还要强大,并且也是一位Lisp高手。(Backpropagation,简称BP)反向传播这种现阶段常用来训练人工神经网络的算法,就是 LeCun 和其老师“神经网络之父”Geoffrey Hinton 等科学家于 20 世纪 80 年代中期提出的,而后 LeCun 在贝尔实验室将 BP 应用于卷积神经网络中,并将其实用化,推广到各种图像相关任务中。
【ML&DL】0 如何理解手写数字识别网络
图片是28281的格式(彩色图片是28283,RGB三通道),可以拉直成一个1784的格式(n张图片则是n784),保留左右像素的关系(丢失了上下像素的关系)。

对于一个分类问题的输出
【ML&DL】0 如何理解手写数字识别网络
如果简单的分类为狗为0,猫为1,鱼为2…的话,这种分类有一些问题:1是数字之间是有大小关系的,而类别之间是没有大小关系的。2是比如得到一个数值2.2和2.3,我们可能会觉得2.2更符合fish,而2.3不接近fish,可能更接近3的一个类别。不符合概率上的解释。(概率是0-1的一个范围)。

所以需要采用一种更加好的编码方式:one-hot编码
【ML&DL】0 如何理解手写数字识别网络
这样类别之间没有前后顺序关系,其中的数字可以归一化为0-1之间,这样可以知道属于该类别的概率。各分类概率之和为1。其中概率最大称为当前类别的支撑度。
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
下面使用手写数字集的分类问题,看怎么进行计算。
【ML&DL】0 如何理解手写数字识别网络
根据矩阵相乘法则,可以知道参数的维度大小。
现在有个问题,这个模型是线性的,回归问题比较简单,采用线性模型可以解决,但是对于一个高维图片识别分类来说,一个线性模型是求解不出的。

我们需要添加一个非线性因子,添加一个非线性f函数,f叫做**函数。使之成为一个非线性模型。
【ML&DL】0 如何理解手写数字识别网络
但是这样模型还是太简单了,实验表明还是不能求解像mnist这样一个简单的数字集。我们可以采用串联的结构。把前一个矩阵的计算结果当成输入。
【ML&DL】0 如何理解手写数字识别网络
这其实是一个降维的过程
【ML&DL】0 如何理解手写数字识别网络
误差loss如何减小呢?计算输出out和真实值y 的一个欧式距离
【ML&DL】0 如何理解手写数字识别网络
小结
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
【ML&DL】0 如何理解手写数字识别网络
并行batch加速
【ML&DL】0 如何理解手写数字识别网络
输入
【ML&DL】0 如何理解手写数字识别网络
计算输出和loss
【ML&DL】0 如何理解手写数字识别网络
自动求导工具
【ML&DL】0 如何理解手写数字识别网络
最后一步,循环往复,其中对一个数据集进行训练叫做一个epoch,对一个batch进行训练叫做一个step
【ML&DL】0 如何理解手写数字识别网络

感谢观看!