学习时间:2018年8月10日星期五

视频地址:https://www.bilibili.com/video/av27877827

视频名称:

深度学习基础上篇(1)之必备基础知识点

第一课:深度学习

 

人工智能=感知+决策+理解

学习的能力是智能的本质

 

大数据时代,通过大数据来学习

 

数据规模越大越能体现深度学习算法的优势

 

无人驾驶汽车:物体、行人、标志、速度等等识别 都通过深度学习实现

 

有趣的image Transfer 图像融合将两个(图片的风格融合)

 

第二课:图像分类(计算机视觉核心任务)

 

图像计算机中的存储:表示成三维数组的形式,每个像素是从0255,越大越亮

三维:长,宽,RGB

 

识别难点:摄像头照射角度,光照强度,形状改变,部分遮蔽(最核心最困难),背景混入(与背景相似)

 

深度学习的步骤:1收据数据并给定标签,2训练分类器,3测试和评估

 

第三课:简单的算法,KNN

特点:分类器不用训练,训练复杂度为0;计算的复杂度和训练数目成正比(复杂度O(n))效率太低了

 

数据库样例:CIFAR-10

10个类标签,5万训练数据,1万测试数据,图片大小32*32(很小,用来练手很好)

KNN来实现,通过欧氏距离来判断是否相似度

 

第四课:参数设置,函数设置

超参数 KNN中的距离公式选哪个?

K选几?

其他超参数如何设定,确定?

KNN是不能用来作图片分类的,光线的轻微改变和图片的偏移将严重影响最后计算出的距离。

如何找到最好的参数;

所有数据=训练数据集+测试数据集

使用训练数据集来交叉验证(取其中的部分作为验证数据集)

 

 

 

第五课:线性分类(分成多个类)

图片大小是 32*32*3RGB=3072

转成列向量:3072*1 最后通过乘以权重加常数项后,表示成10*1的向量(得到得分值)(表示属于这10种分类的得分值/概率),判定成概率最高的那个类即可

 

第六课:SVM损失函数,表示分类错误的损失值,分类错误的程度

用来评估预测的效果,用来纠正预测不理想的

预测成错误类的值 减去 预测成真实类的值:这个结果是越小越理想的,如果很大就表明模型错误的很严重,需要纠正

 

最后会计算所有(大量)图片的损失值(取平均)

 

第七课:正则化(惩罚项) 加在函数后面(求最小值时加一个正项)

理想的权重分布不应该是很极端,应该比较平均(平滑)

权重的分布,表示各个点的重要性;使用正则化避免部分点的权重过高,部分点的权重过低

 

第八课:softmax分类器(损失函数)

将得分值转换成概率值,

使用sigmoid函数来实现,输入是负无穷到正无穷,输出是01(得到概率)

归一化处理:不直接使用得分值,先将得分值取指数,再求占比作为其概率;

概率的大小表示是这个分类的可能性。概率越大越属于这个类别,这个时候的损失值应该越小。是反比关系。

Softmax损失函数 优于 SVM损失函数

 

第九课:优化参数(让参数取得最理想的值)

求函数的最小值,梯度下降法

 

第十课:最优化

梯段下降(跟随梯度),每一次都沿着梯度下降方向走;

梯度下降时,每次都迭代多张(bachsize)图片,通常取2n次张图片。取决于计算机的计算能力,例如64或者128

学习率:梯度下降时,每次移动的步长,千万不能太大了。

 

第十一课:反向传播

前向传播:计算loss

反向传播:计算w,b,用来更新权重值。使用导数来判断单调性,改变权重的值。

权重的分配,是什么:加法门单元:均等分配,max门单元:给最大的,乘法门单元:互换的感觉

深度学习基础上篇(2)神经网络模型

第十二课:神经网络

 视频连接地址:https://www.bilibili.com/video/av27894082

层:输入层,隐藏层,输出层

 

网络中的线:表示权重

 

网络中的圈:表示计算出的值(经过激活函数后计算的值)

 

为什么存在多个隐藏层?层越多,激活函数越多,非线性越复杂,模型能描述的规律更加丰富。

 

使用激活函数在表现非线性的特点(线性的模型太局限的,不够用)

 

 

 

第十三课:激活函数

 

sigmoid作为激活函数时,神经网络越深,多个梯度相乘时,梯度就会消失(为0了),所以现在的神经网络已经不用sigmoid函数作为激活函数了。

 

使用ReLU=max(0,x) 已经默认使用这个函数作为神经网络和深度学习的激活函数了。

 

神经元的越多,表示的模型更加复杂(能够划分更复杂的分类);同时也很容易出现过拟合;

 

 

第十四课:正则化:处理过拟合

 

视频中的例子:正则化的系数越小,越容易拟合。泛化能力越强越好。

 

神经元越多越好,就能表达更加复杂的模型;

 

数据预处理:

 

将原始数据,以0中心化,再归一化

 

权重初始化:

 

对权值w进行随机初始化或者高斯初始化(不取相同的值,反向传播迭代太慢了,千万不能全取0);对b进行常数值初始化(取0或者1就可以了)

 

DROP-OUT

 

不适用部分神经元,通过增加迭代次数来弥补。

(完)