深度学习

深度学习

基本流程:

  1. 数据的获取
  2. 特征工程 最核心
  3. 建立模型
  4. 评估与应用

特征工程的作用:

  • 数据特征决定了模型的上限
  • 预处理和特征提取是最核心的
  • 算法和参数的选择,只是为了逼近这个上限

特征如何提取:

image-20220705151226407

传统特征提取方法:

image-20220705151337532

深度学习的目的 :能够自动的提取特征

image-20220705153339979

图像分类

给定一张图片,计算机能够自动的识别该图像中的某一部分属于那个类别

图像的表示 :计算机眼中的图像是一串串数字

image-20220705154056464

计算机视觉-图像分类面临的挑战:

  1. 照射角度
  2. 形状改变
  3. 部分遮蔽
  4. 背景混入

机器学习常规套路:

  1. 收集数据并给定标签
  2. 训练一个分类器
  3. 测试,评估

k临近算法:

  1. 计算已知类别数据集中的点与当前点的距离
  2. 按照距离依次排序
  3. 选取与当前点距离最小的K个点
  4. 确定前K个点所在类别的出现概率
  5. 返回前K个点出现频率最高的类别作为当前点预测分类
  6. 缺点:
    1. 被分类的对象会受背景主导,不能够聚焦到我们所关注的主体上

神经网络基础

f() 表示一个函数, W表示每个类别的权重, x 表示目标图像的所有像素点, b表示对每个类别进行微调

image-20220705162339693

运算结果:

image-20220705164307698

从图中可以看出,猫被分为了狗类,导致这种情况的主要原因是:权重参数矩阵W的不合理,所以神经网络主要是在不断的更新权重矩阵 ,初始的时候我们可以随机初始化权重矩阵W,然后通过不断的优化,更新,得出最优矩阵

损失函数

image-20220705165107067

损失函数的值相同,不一定意味着两个模型一样

image-20220705195242978

正则化惩罚项:是为了解决权重参数带来的影响

梯度运算

通过这个方法最终还是得出的得分值,但是我们想要一个概率值,如何把得分值转变为概率值那?

使用Softmax分类器

image-20220706115555305

image-20220706115536959

向前传播得到得分值

image-20220706111610582

梯度下降

引入:当我们得到了一个目标函数后,如何进行求解?

​ 直接求解?(并不一定可解,线性回归可以当做是一个特例)

常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做

如何优化:一口吃不成个胖子,我们要静悄悄的一步步的完成迭代(每次优化一点点,累积起来就是个大成绩了)

image-20220714085438370

image-20220707113135765

神经网络

神经网络整体架构,有两种形式:

生物学上的

数学公式上的

我们只需要记住数学公式上的,权重参数求导,一系列的就行

image-20220707113411217

数学上的:

image-20220707113556329

层次结构:神经网络是一层一层的进行优化和参数的传递

神经元:

input layer: 输入层,有几个特征就输入几个,每一个圆圈,就代表一个特征

hidden layer 1 : 输出层,将原始的输入特征,经过某种特殊的变换转换成,现有的几个特征,图中的权重矩阵是:3*4的

hidden layer 2 : 输入层,将前一层处理完之后的数据进行,在加工,在处理,在分类,能够更好的被计算机利用起来,图中的权重矩阵是4*4的

output layer : 通过某种操作转换成输出矩阵,该权重矩阵是4*1的

全连接:每层之间都需要全部链接起来

非线性:在通过权重矩阵处理完之后,我们还需要进行一些线性变换。然后在进行下一步的操作

image-20220707121518114

惩罚力度越大,过拟合风险越小

image-20220707121601054

激活函数

image-20220707121946719

相比于sigmoid函数relu函数更加适用于神经网络

sigmoid:函数在进行求梯度的时候可能会出现梯度为零的情况

relu:不会出现梯度为零的情况

image-20220707121954833

数据预处理

image-20220707122506367

参数初始化

参数初始化同样十分重要

通常我们使用随机策略来进行参数的初始化

W = 0.01 * np.random.randn(D, H)

DROP-OUT

我们在训练数据的时候很可能出现过拟合风险,这时候我们可以在每一层训练的时候减少一些神经元,来减少过拟合的风险

image-20220707125317159