做美图网站有哪些东西,专业的培训行业网站模板,网页设计主题推荐,seo外链建设的方法有文章目录 深度学习与AI的关系机器学习的流程机器学习的核心以及问题深度学习要解决的问题模型如何搭建#xff1f;特征如何提取#xff1f;为什么要深度学习#xff1f; 深度学习的应用深度学习的问题计算机视觉任务分类与检索如何实现分类 神经网络基础线性函数损失函数防止… 文章目录 深度学习与AI的关系机器学习的流程机器学习的核心以及问题深度学习要解决的问题模型如何搭建特征如何提取为什么要深度学习 深度学习的应用深度学习的问题计算机视觉任务分类与检索如何实现分类 神经网络基础线性函数损失函数防止过拟合 前向传播反向传播反向传播的计算方法 神经网络的架构输入层 输出层 隐藏层全连接层神经元神经元对网络的影响惩罚粒度对结果拟合的影响 激活函数数据预处理参数初始化过拟合解决方法 深度学习与AI的关系 AI 包括 机器学习 包括 深度学习 目前深度学习的算法表现更好
机器学习的流程
数据获取 特征工程 建立模型 评估与应用
机器学习的核心以及问题
特征、算法 特征决定了模型的上限算法和参数决定了如何去逼近这个基线
问题传统的机器学习算法在数据规模上升时效果无法提升
深度学习要解决的问题
模型如何搭建
领域都有成型的模型每年都有很多优秀的论文可以参考反而特征提取更加重要
特征如何提取
数值特征比较好提取 但是文本和图像 音视频等怎么提取呢 留到下文详述
为什么要深度学习
深度学习是一个黑盒子能够提取出来最合适的特征且能够自我学习更新具备强大的学习能力
深度学习的应用
视觉类和自然语言类
视觉类任务 目标检测无人驾驶汽车 怎么识别和检测目标
医学 影像识别 基因检测 自然语言处理 聊天机器人生成对话机器人 人脸识别 人脸替换 超分辨率重构
深度学习的问题
计算量很大 计算中涉及的参数上千万 上亿计算和更新耗时很长 因此移动端不能很好的支持
计算机视觉任务
分类与检索
分类是指让程序分类图片是什么, 由斯坦福大学的李飞飞教授带领创建IMAGENET分类数据集。该数据集包合 14,197,122张图片和21,841个Synset索引基本可涵盖大部分分类了。
如何实现分类
传统的算法识别图片类别的方法
比如K临近算法 以上图为例 选择离目标最近的3个点比如第一个圈部分三角形居多那这个图片的分类就很可能是三角形。 但是这也有问题如果选择的K是5个呢 那这个类别的判定就是正方形分类截然相反
以像素的近似点分类 先看一下图像在计算中的表现形式以3通道为例RGB 3通道一个3维 0到255的图像h, w, c形式 比如543的图片为例在计算机中的表示 这样一个3维的像素数据如何判定出图片类别呢 既然颜色的明亮程度可以用像素值类标识最先想到的就是找出一些分类目标图片计算输入图片与分类图片的像素差哪两个个像素差最小就归属于哪一类最终分类的效果如下 可以看出来部分图片的分类是正确但是还有很大一部分是错误的比如马被识别到了翻斗车的类别里 问题出在哪里呢 首先无法区分背景和主题对一幅图片来说主题和背景的权重应该是不一样的显然像素值的大小无法应对这种情况另外还有如下所述的难点
面临的挑战 比如照射的角度会导致像素变化 比如主体被别的东西遮蔽了 形状改变了 被挡住了一部分 背景混子在一起 如何解决呢 具体实现方式 学习一次就知道了比如遮蔽的情况找一些类似的图片进行标注进行学习 通过学习后的网络就会记住这些特征也是属于这种分类的
神经网络基础
线性函数
32323)的图像 ,目标就是能计算它属于每个分类的得分。 这个猫是由3072个像素点决定的也就是所谓的特征有3072个记为x怎么得出分值呢 首先我们考虑一个问题每个像素点对于这个猫的重要程度一样么 答案是肯定不一样比如背景的像素点是不相关的重要程度低 比如眼睛耳朵等等的像素点很重要需要一个高的权重参数 所以需要3072个权重参数来标注这个像素对于这个分类的重要程度
我们用一个w3072标识 每个像素是猫这个分类的权重 如果是判定十分类就需要3072组w10*3072大小的权重矩阵分别去表示3073个像素分别对应10分类的权重。
矩阵中的数字的意义 越大的权重数据说明当前的这个像素对这个类别比较重要 权重中的负数表示对这个类别是抑制的作用 0表示对这个类别没有作用
这个矩阵哪里来的 初始是随机值 比如现在判定错了说明是权重不太对想出一种方法不断的去优化权重矩阵直至能够区分出这个分类。那么问题来了这个优化方法是什么答案是利用损失函数
损失函数
损失函数的作用是来衡量分类的结果的神经网络可以分类可以回归等相同的网络配以不同的损失函数就可以完成不同的任务。
举个例子经过神经网络输出猫 狗 飞机的分数是22 56 48损失函数sum(max(0, y_predict - y_true)),这样设计的损失函数在分类正确时损失就为0
另一个问题损失函数有不同的类型如果损失函数的值相同意味着模型相同么如下的例子
比如输入数据 1111 模型1最终w1 [1,0,0,0] 模型2最终w2 [0.25, 0.25, 0.25, 0.25]
答案肯定是否定的这两个模型肯定是不同的虽然这两个参数与输入矩阵相乘后损失相同的。第一个模型是一种突然的变化就容易导致结果过拟合
防止过拟合
通常为了防止过拟合损失函数都设计为加上正则化的惩罚项 损失函数 数据损失 正则化的惩罚项
我们总是希望模型不要太复杂过拟合的模型是没用的神经网络太强大了而越强大的模型过拟合就越大
前向传播 f(w, x)计算损失的过程就是所谓的前向传播。
更进一步在神经网络中最终到的是一个分数值但如果给我们一个概率的话是不是更好 这就是通常所说的 归一化f e指数次幂可以放大变化上述可以归为0.1区间的概率值也是常说的softmax
反向传播
由输入一步步计算出损失,是正向传播 那么如何更新模型呢 更新模型的实质就是更新权重w 这就是所谓的反向传播也叫梯度下降
反向传播的计算方法
当我们得到了一个目标损失函数后让损失尽可能的小结果就越靠近真实值那怎么去求解呢 寻找一种方法更新后的参数能使目标函数达到极值点极值点又是怎么求数学上已经证明了的是极值点导数为0的点这就是所谓的更新的方向。
我们需要从损失出发向前去寻找导数为0的点这种从后向前传播的过程就是反向传播具体来说的计算方法是用了导数的链式法则 传播就是根据这个法则一步步往后计算的常见的梯度下降算法 批量梯度下降 容易得到最优解但是考虑所有样本速度很慢 随机梯度下降SGD 每次找一个样本迭代速度快但不一定是朝收敛的方向 小批量梯度下降 每一次更新选择一小部分数据来算
学习率或步长 梯度下降的粒度它对结果产生巨大影响一般都会选择小一点
另外每次批处理的数量 32 64 128都可以很多时候需要考虑内存和效率
神经网络的架构 输入层 输出层 隐藏层
除了输入和输出其它层叫做隐藏层
全连接层
中间这些连接线其实就是所谓的参数被称为全连接层实质上是权重矩阵意义是什么呢比如上述对于10分类的权重矩阵是对3072个像素的每个像素点10个分类的不同权重。
神经元
隐层中的特征个数
神经元对网络的影响
参数个数 举个例子 8006003的图片 100万个像素点100w输入增加一个神经元1个隐层就增加100w个参数拟合的程度 斯坦福大学有一个网站可以显示神经元个数对分类的影响 https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html 上图分别是2和6个神经元的展示结果6确实是更拟合
惩罚粒度对结果拟合的影响 显然这里更大的惩罚力度可以让模型更稳定
激活函数
非线性函数 sigmod RELU tanh 等 实际上几乎每个隐藏层后面都还包括一些激活函数加入一些非线性特征常用的激活函数及其优缺点 如上所述sigmod 一旦数值较大或者较小sigmod函数获取不到了也就是所谓的梯度消失 ReLU及变种是当前最常用的激活函数
数据预处理
zero center 移动中心点 , normalized 缩小尺寸 参数初始化
一般都是随即策略进行参数初始化
过拟合解决方法
正则化惩罚力度drop out 舍弃一部分神经元其他