
其实人工智能诞生比较找,大数据时代的来临,大大加速了人工智能的应用。

4:1 李世石惨败

随着数据规模的增加,传统人工智能算法的瓶颈就会出现,此时应该选择深度学习算法。

这些字幕是深度学习程序写的


Content + Style = Interesting thing

图像分类是计算机视觉的核心任务。
假设我们有一系列的标签:狗,猫,汽车,飞机。。。
我们怎么才能判断下面这张图是猫呢?

一张图片被表示成三维数组的形式,每个像素的值从0到255
例如:3001003
(最后的3代表颜色 RGB. R代表red,G代表Green,B代表Black)

计算机视觉会存在很多干扰项。





背景混入是目前最麻烦的一种情况




对于未知类别属性数据集中的点:
概述:
KNN 算法本身简单有效,它是一种lazy-learning 算法。
分类器不需要使用训练集进行训练,训练时间复杂度为0。
KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么KNN 的分类时间复杂度为O(n)。
距离度量和分类决策规则是该算法的三个基本要素
问题:
该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K 个邻居中大容量类的样本占多数
解决:
不同的样本给予不同权重项
10类标签
50000个训练数据
10000个测试数据
大小均为32*32


测试结果:
准确率较低



问题:
交叉验证:

选取超参数的正确方法:
选取超参数的正确方法是:将原始训练集分为训练集和验证集,我们在验证集上尝试不同的超参数,最后保留表现最好那个。
如果训练数据量不够,使用交叉验证方法,它能帮助我们在选取最优超参数的时候减少噪音。
一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法。
最近邻分类器能够在CIFAR-10上得到将近40%的准确率。该算法简单易实现,但需要存储所有训练数据,并且在测试的时候过于耗费计算能力。
最后,我们知道了仅仅使用L1和L2范数来进行像素比较是不够的,图像更多的是按照背景和颜色被分类,而不是语义主体分身。
整体步骤:
预处理你的数据:对你数据中的特征进行归一化(normalize),让其具有零平均值(zero mean)和单位方差(unit variance)。
如果数据是高维数据,考虑使用降维方法,比如PCA。
将数据随机分入训练集和验证集。按照一般规律,70%-90% 数据作为训练集。
在验证集上调优,尝试足够多的k值,尝试L1和L2两种范数计算方式。
每个类别的得分

得分函数:

实例:
0.256 - 0.5231 + 0.124 + 2.02 + 1.1 = -96.8




从上例可以看到,最终的评分效果不理想,预测值与实际值之间存在较大的差异,这个引入了损失函数。

从上图可以看出,模型评估的效果越差的话,损失函数的值就越大。

损失函数:

根据上图的损失函数,结合下图的x , w1, w2
会出现 f(x,w1) = f(x,w2)
但是w1只对一个变量设置了权重值,而w2却对所有变量设置了权重值,虽然模型评分相同,但是理论上将更多的变量加入到模型中是更好的方法。



为了解决上面提出的问题,于是引入了正则化惩罚项
可以理解的理解 λ 就是
w
2
w^2
w2
y(x,w1) = 11 = 1
y(x,w2) = 0.250.25 + 0.250.25 + 0.250.25 + 0.25*0.25 = 0.25
此时y(x,w2) 的损失函数就小于y(x,w1),解决了上面的问题。


Softmax 分类器 是 多类别分类,Softmax的输出是概率。

Sigmoid是符号函数:

x取值范围是(-∞,+∞),而y的取值范围是[0-1]
刚好我们的概率取值范围也是[0-1],于是可以对应起来。

Softmax的输出(归一化的分类概率)
损失函数:交叉熵损失(cross-entropy loss)


上图被称作softmax函数
其输入值是一个向量,向量中元素为任意实数的评分值
输出一个向量,其中每个元素值在0到1之间,且所有元素之和为1


粗暴的想法:

得到的结果:


第一个位置是随机的,然后不挺的迭代,找到最低点

跟随梯度:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYJswv5W-1659234249640)(https://upload-images.jianshu.io/upload_images/2638478-2962a7e9f53e5658.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]



Bachsize通常是2的整数倍(32,64,128)

上图是 训练网络时的LOSS值视化结果。
训练网络时的LOSS值视化结果


函数运行的结果与验证集存在偏差(损失函数大),此时可以通过反馈结果,调整权重参数,尽可能的将 损失函数的值变小。





加法门单元:均等分配
MAX门单元:给最大的
乘法门单元:互换的感觉






正则化项在神经网络中的重要作用

越多的神经元,就越能够表达能复杂的模型

激活函数是用来解决 预测结果与变量之间的非线性关系的问题。

最开始的激活函数就是Sigmoid,但是他会存在一个梯度消失的问题。



于是引入了新的激活函数ReLUctant
当x<=0的时候,y=0
当x > 0 的时候,y=x


全零值初始化?


左图是全连接,模型效果更优,但是模型也更复杂,计算量也大。
所以有了右图的DROP-OUT,将一些不重要的连接去掉,保证模型效果的同时,尽量减少一些不必要的计算量。
