学习视频来自B站视频:从入门到精通!不愧是公认的讲的最好的【Tensorflow全套教程】同济大佬12小时带你从入门到进阶!Tensorflow2.0/计算机视觉/神经网络与深度学习
UP主:
咕泡AI算法工程师的个人空间-咕泡AI算法工程师个人主页-哔哩哔哩视频
Tensor :张量 有维度的,可以当做一个任意维度的矩阵
Tensorflow 计算单元在这里流动(做计算)
tensor可以是一个值(number),可以是一个向量(vector),也可以是一个矩阵(matrix)
tensor是一个可以进行GPU计算的矩阵
源数据好坏与数据处理影响了深度学习的效果
机器学习的流程:
计算机眼中看到的图像:
会是一个三维的矩阵,包含长宽和颜色通道,颜色通道为3,这里是我们平时用的最多的RGB 3通道。
K近邻学习方法,提取色素快,然后对比作差得到绝对值,这种学习方法有很严重的问题,就是它无法区分哪个是主体,由于主体基本不可能占满整个图像,导致得到的结果面临一个问题,就是背景相似的图像会被识别成一类物质。
这里就是把整个像素点集成一个矩阵,1X3072的矩阵,与另一个3072X1的权重矩阵做矩阵运算,我们知道线性代数的运算法则 这里是横着的1X3072与竖着的3072X1进行矩阵运算,得到的就是个1X1的矩阵,也可以说得到一个数值。
最后得到的权重值+b(偏置值),会计算到与之最近的参数是什么,然后对应识别出他是什么。其中权重值是起到决定作用的,因此权重矩阵的各种数值起到的就是决定性的作用,偏执值只是起到了一个微调的作用。
第一行×第一列,+猫这类的偏置值,得到了猫的得分
以此类推,得到剩下两个类的得分。
我们得到这个各个块的值所用到的算法就是梯度向量算法(Gradient Descent,简称GD),这是深度学习的核心之一。(详情可以自行搜索,我认为这个算法是必须了解和掌握的)
但是很明显,可以看到,这里得到的结果中狗的分数最高,所以错误的识别成狗了。
这里展示了损失函数,+1中的1相当于delta,相当于代表一个容忍度,如果容忍度的值越高,那么所需要做到的正确的值与其他值作差,如果作差的值全大于这个delta,那么就代表损失值为0,如果
作差的值小与delta,比如我给的delta是10,猫得分13,汽车得分8,作差是5,那么5<10.此时是有损失的 ,我们需要用一套损失函数来计算对应的LOSS值。
权重参数设置不同可能会导致过拟合,因此调整权重参数的比值非常重要。
损失函数=数据损失+正则化惩罚项
softmax分类器,这种分类方法可以用来放大差异化,比如说本来差异没这么大,我们如何放大这个差异呢?那就可以用到exp,也就是e的指数幂的操作,让数值的差异更加大,这种操作的好处就是能够放大差异,然后我们使用Log函数再归一化的处理,可以发现我们需要做到的就是让数值越来越趋近于1,趋近于1的时候LOSS的值越小,等于1的时候为0。
这里完成的内容就是前向传播。
有了x和w,如何得出损失,完成这一系列的过程叫做前向传播。
反向传播的内容:基于我的损失值,(损失值高说明w不好),往山谷下走,利用梯度下降改善w值。
豆包中关于这俩内容更细致的描述:
反向传播过程中需要逐层求偏导,利用偏导的梯度值X自身的梯度值
在运算的过程中,w1,w2,w3的好坏决定了输出结果的好坏。
理论情况下神经元越多效果越好,但是不得不需要考虑的就是过拟合的问题。
Sigmoid函数可能会有梯度消失的现象,比如某地方梯度为0,那么传播到后面的梯度都是0,也就是不会进行更新了。
Relu函数(当今百分之90都在用的函数),不会发生梯度消失的现象。
DROP-OUT训练方法,为了避免过拟合的现象,我们训练的时候会让网络不那么强大,因此在训练的时候会选择部分神经元进行训练,每次训练随机选中一定个数的神经元抛弃不进行训练,可以一定程度避免过拟合现象。
理论篇到底为止,然后就是实战篇。