深度学习(论文相关)
深度学习一些概念
通过阅读论文可以理解提取数据特征的重要性
深度学习=学习怎么去提取特征
应用领域
深度学习应用:
输入:图像输入或者文字输入
算法:还是基础的模块计算
神经网络中的参数几千万几亿,所以优化神经网络很困难
(深度学习的速度可能会很慢,创新点!!!提速)
有很多图像的数据集,以后可用!
https://image-net.org/
也就是我们数据规模越大,深度学习算法的优势越明显
计算机视觉任务
之所以表示为3维的,是图像的长像素,宽像素,和点的颜色(颜色0-255,颜色越深数值越大)
神经网络也会识别到有无遮挡
视觉任务中遇到的问题
K临近算法
物以类聚,人以群分
这个算法的主要思想就是:
划出不同的范围,比如第一个圈里面三角比较多,那我就认为圆点的位置可能是一个三角,假如第二个圈内比较,此时蓝色方块数量比较多,那我就认为,此时的绿点可能是一个方块
(但是这么认为还是有点主管臆断了,我们应该用更加客观的方式)
这个算法用的并不多,主要是了解了不能主观臆断,基本都需要综合考虑数据(关于异常数据后续在看看具体情况)
这个做减法就是灰度做减法,通俗一点就是
颜色形状差不多的
到这里都是K算法的应用,物以类聚,这里就按照大致颜色和形状进行判断了,而不是物体本身
得分函数
猫是由很多像素点组成的,但是我们要思考一下前面的K算法也是单独考虑了每个像素点,但是最后结果差强人意。
所以在得分函数里,我们还是关注每一个像素点,但是对不同的像素点对应不同的权重
!!注意:这里面几乘几都表示的是矩阵
(视频中通俗的讲解是:上面的10是10个种类,也就是我可以定义猫,狗,兔子等10个种类,然后依然是对每一个像素点进行检测,判断这个像素点是那个类别)
最后来一张图片,判断猫40%,狗30%,飞机10%(总的概率加起来应该是100%懒得写了)最后得出结论这个图片可能是个猫
b偏执参数微调
每一个种类都有各自的偏执参数(不同)
这样就能看出来这不是简单的线性函数
损失函数
这个图的详细讲解:
首先视频作者是画个十字将图片简单分为四个像素点先(多了不好懂)
第一行红色代表猫的权重,第二行绿色代表狗的权重,第三行紫色代表船的权重,
白色部分代表像素点的灰度
计算方式举例:
0.2X56+(-0.5)X231+0.1X24+2.0X2=1.1
也就是这四个都是每个像素点的权重(以-0.5那个权重为例:那个24的像素点我就不认为它是猫,所以我给一个低的权重)至于这个权重怎么来的(好像说是机器训练中得出的)
但是发现最后的结果把猫判断成狗了
思考:哪里出了问题
我们白色灰度那一块是不会变的,是最原始的数据
也就是我们的前面权重出现了问题
注意:我们是仅仅把像素点取了4个,应该选的更多会好点
这里的损失函数就是计算,你这个计算结果算的有多不好,或者有多好的(评价体系)
公式讲解
Sj是错误类别
Syi是正确类别
在猫里面错误类别就是青蛙和车的数据,正确类别就是猫数据
然后看计算详情就ok
损失函数当值为0的时候认为没有损失(也就是评估正确的意思)
所以需要1给拉一下(我的判断正确的数值至少比你判断出来的错误高1以上才是没有损失的)
这个函数数值越大越不准(损失越大)
向前传播整体流程()
发现模型A和B都是一样的损失,但是A一定会产生过拟合(只关注局部)而B就比较平稳
兰姆达数值越大,证明越不想过拟合(减小这种邪门数据的影响)
神经网络是一个过于强大的模型,越强大的过拟合的风险越大,我们在研究中希望神经网络弱一点
捋一遍:
x输入数据
W权重
*得分值(得分函数计算得出)
hinge loss损失函数
R(W)防止过拟合的参数
说到底我得到的还是一个分数(评价是不是猫的分数)
上面的公式看起来很麻烦,但是配合例子就比较简单了
下面还是之前算出的判断猫是不是猫的成绩
猫:3.2 车:5.1 青蛙:-1.7
先进行e的x次方操作:
ex不仅放大了差异,还将所有的负数变成了正数
把大家的差距变大了,然后平均化计算是:
24.5/24.5+164+0.18=0.13得出的
剩下两个计算方式同理
然后在0-1之间的数值在坐标轴上是负的,所以我们要在公式前面再加上一个负数,让最终结果变成正的
返向传播计算方式
就相当于我有一个猫的图片,ABC步骤先后找出比较重要的部分(也就是蓝色,绿色和黄色圈出来的部分)
这个等待后续补充(视频半截)
下面这个链接的上一节,4,5P
https://www.bilibili.com/video/BV1K94y1Z7wn/?p=9&spm_id_from=pageDriver&vd_source=6ebf7a12e4cd4cf6f7d36b3d14621c4e
神经网络整体架构
仅仅看看数学模型啥样子就行
神经网络是一层一层办事的
有输入端和输出端
全连接:相当于一开始我传输了三个数据,然后这三个数据与后面的特征都进行了链接(1连4)
我也就将三个输入数据转换为了四个特征
权重是计算机生成的,因为计算机比较喜欢数据
仔细看下面这个绿色弹幕,说的很好
感觉前面应该是41的矩阵
41 14 得出一个44的矩阵
先把三个特征变成了四个特征,然后在来四个特征(现在应该是16个把)
在神经网络中,参数是最重要的也就是黑盒子里面的w,需要不断训练得到
wx前面得分函数
max出现过
一直堆叠
神经元个数对结果的影响
中间一个一个小圆圈就是神经元
神经元越多,过拟合程度越大,效果越好,但是运行效率会低
经典的几个演示神经网络的网页或者项目
很可惜ConvNetJS不维护了,找找代餐把
疑似ConvnetJS
惩罚力度加大,就比较平滑
就是我们平常训练,到最后测试
训练集要是数据产生一些比较大的波动会让计算机有一种习以为常的感觉,导致到最后真正测试的时候感觉不到那些比较大的波动了,所以我们还是希望测试机效果比较好的,就像图一效果那么好
正则化和激活函数
在权重计算过后要进行一组非线性变换,就是激活函数(非线性变换)
一开始这个Sigmoid函数只要有一个神经元是0,因为做乘法,后面的数据都是0了,也就是图像上显示的梯度不变了(函数没有斜率了)
后面基本上Relu函数是用的比较多的
而且还没有梯度消失的现象
主要就是知道Relu用的很多就行了,还有S那个不常用了
数据预处理,数据初始化
数据预处理:(就是上面显示的两个公式)
第一步:中心化:减去均值
第二步:标准化:除以标准差
参数初始化后面D,H哪里是数组
前面0.01*的意思是让数据都波动不是太大(尽量避免过拟合)这个0.01很显然对大数(也就是峰值高的地方影响比较大)
dropout
想让过拟合效果降低,舍弃部分来降低这个
下面的一层一层就相当于神经网络黑盒子里面的神经元,我随机割舍一部分(这里的不用不是永远不用,假如永远不用你一开始设置一层只有三个不就完了)
这里舍弃是随机舍弃
我每次不一定舍弃那几个
同时每一轮(好多次迭代)也不一定和上一轮舍弃的就完全一样
(类似运动员随机上场)
补一条:到最后test的时候也是右边的模型,不需要再恢复到之前的模型再进行测试了
卷积神经网络
计算机视觉已经达到预期了(可以看出来已经超过human了)
神经网络是用来做特征提取的,卷积神经网络也是
上面这不就和我们淘宝识图找衣服一样吗
可以看到也是有输入输出,将模糊图像变的清晰
和论文里面说的串起来了,当时就说DeepNovo可以在GPU和CPU上面都能跑
GPU:图像处理单元(打游戏基本在这上面)
游戏觉得卡就是连接慢,处理速度慢
卷积网络与传统网路的区别
相当于CNN提升了一个维度
输入的图像有了深度(空间)
卷积:提取特征
池化:压缩特征
这个举得例子和实际情况不是很贴合5X5和3X3,可以了解一下
实际上是3X3X1的小块拿出来进行的提取特征,我们也能看出来圈出来的三个进行计算就是后面3X3矩阵(绿色的)的第一行的数据
然后依次往下取得到第二行的(具体的计算交给代码实现和计算机)
正常情况下应该是酱紫的
长X宽X灰度