cs231_n3.2优化

首先搞清楚三个概念及其相互关系(计算机视觉的基本任务):

  分类器:线性函数/神经网络/卷积神经网络---实际学习的是参数集W(也可以理解为学习每个类别的模板)

  损失函数:评估得到的W的好坏  如Li=f(xi,W)-yi     f为预测标签,yi是真实标签  f=Wx

  (最)优化:寻找能使得损失函数值最小化的参数W的过程(寻找最优的W)

最优化 Optimization

策略#1:一个差劲的初始方案:随机搜索

策略#2:随机本地搜索

策略#3:跟随梯度:1 利用有限差值计算梯度/数值梯度法      2 微分分析计算梯度

梯度下降:利用每一步的梯度,决定下一步的方向,有不同的更新策略,决定究竟如何使用梯度信息,尽快到达山底。

其中1是一个示性函数,如果括号中的条件为真,那么函数值为1,如果为假,则函数值为0.

普通的梯度下降

while True:
   weights_grad = evaluate_gradient(loss_fun, data, weights)
   weights += - step_size * weights_grad # 进行梯度更新

小批量数据梯度下降(Mini-batch gradient descent)

# 普通的小批量数据梯度下降
while True:
  data_batch = sample_training_data(data, 256) # 256个数据
  weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
  weights += - step_size * weights_grad # 参数更新

图像的特征表示

因为多模态等原因,直接将图像送入分类器表现可能并不好,如问题本身不是线性可分,送入线性分类器效果肯定不好。所以在深度神经网络大规模应用前分两步,首先计算图片的各种代表特征,如计算与图片形象有关的数值,然后将不同的特征向量合到一起,得到图像的特征描述,它将作为输入源传入线性分类器(人工设计特征进行分类)。

1 颜色直方图

2 方向梯度直方图

3 词袋

传统提特征方法和卷积神经网络:

传统提特征的方法,在提取这些特征之后,固定特征提取器使它在训练中不会被更新,而在训练中如果它用于更重要的特征的话仅仅更新线性分类器。

卷积神经网络提特征本质上和传统发放没什么区别,唯一的差别就是并非提前记录特征,而是直接从数据中学习特征,所以将像素值输入卷积神经网络,经过多层计算,最终得到一些数据驱动的特征表示的类型,然后在整个网络中训练所有的权重,而不是最上层的线性分类器的权重。

特征就类似于输入图像的简化,或者说其关键信息。而权重则是像素和分类的对应关系,学习到的是一个映射关系或者说模板。

参考:https://blog.csdn.net/kingsure001/article/details/107904317

猜你喜欢

转载自blog.csdn.net/jialibang/article/details/109022234
今日推荐