首页 > 其他分享 >深度学习基础

深度学习基础

时间:2022-12-07 23:22:19浏览次数:32  
标签:current 函数 迭代 gradient 样本 基础 学习 points 深度

1 线性回归(linear regression)

   线性回归问题可以使用最小二乘法进行拟合,该方法可以求得优化方程的一个全局最优解,但当数据量很大时需要很大计算量。

   梯度下降法不对方程进行约束,通过迭代方式对参数进行优化,该优化解可能是一个局部最优解。

   虽然梯度下降法可能得到一个局部最优解, 但对于深度学习训练来说,我们可以通过改进初始化参数并观察测试集效果选择一个合理的最优解即可实现目标。

   1)样本(sample)

     对于一组观测数据集,其中,为输入特征,为对应输入特征下的真实输出值。

   2)假设函数(hypothesis function)

     对于以上样本数据,首先需要定义一个假设函数,该函数描述了样本输入特征值与输出变量之间的函数关系,只是参数未知,如下:

      为单个样本的多维特征值,为该假设模型的参数。

    3)损失函数(loss function)

     基于样本数据和假设函数可以定义一个损失函数  ,当预测结果与真实结果越接近时,该函数的值越接近0。

     该函数中的未知量仅有,因此问题转化为求解下的

    4)梯度下降法

      要求得损失函数的最小值对应的参数,可以使用梯度下降法求得:

      首先对未知量都初始化为0,并设定一个迭代步长

      然后对所有未知量执行一次迭代 ,迭代后会逐渐靠近最优解,

      在迭代一定次数后,损失函数不再下降,此时即找到了一个最优解。 

      以上算法中有一些注意事项如下:

      .当存在多个局部最优解时,初始化值的可能需要进行不同的尝试,此处的优化过程其实可以设置任意初始化值,因为这是一个凸函数;

      .迭代步长不能过大或者过小,过大会出现损失函数的震荡,过小会导致收敛速度很慢;

      .对样本特征值归一化可以避免学习过程收敛速度过慢问题,使用使得归一化后特征值期望为0,方差为1。下图给出了一个直观的解释:

          

 

     5)应用梯度下降拟合直线

         利用以上方案给出一个直线拟合算法,给定平面上的一些点(x,y)构成一个特征集,拟合一条最佳直线,方案如下:

         .假设函数为 y = wx + b,损失函数为 

         .使用梯度下降法更新w和b,,m为样本点数量,为学习率,代码如下:

# b_current, w_current为一次迭代前的参数值,第一次迭代时使用程序给定的初始化值,如0,0等
# points为样本集
# learningRate控制迭代速度,要避免设置过大数值导致迭代过程无法收敛
# 返回值为一次迭代后新的参数值
def step_gradient(b_current, w_current, points, learningRate):
    b_gradient = 0
    w_gradient = 0
    N = float(len(points))
    for i in range(0, len(points)):
        x = points[i, 0]
        y = points[i, 1]
        b_gradient += -(2/N) * (y - ((w_current * x) + b_current))
        w_gradient += -(2/N) * x * (y - ((w_current * x) + b_current))
    new_b = b_current - (learningRate * b_gradient)
    new_w = w_current - (learningRate * w_gradient)
    return [new_b, new_w]

 

2 全连接层网络

   在第1节线性回归中,使用的线性模型为 为单个样本的多维特征值,为该假设模型的参数。

   为了提升模型的表达能力,可使用更多的连接层以增强表达能力,可表达为:为矩阵,为行向量,其尺寸与输入输出参数关联。

         

   根据人眼特性(感受自然界图像会忽略掉部分响应较小数据),可在每一层网络中添加一个非线性函数以增强表达能力。

   一般情况下,可使用ReLU函数,其图像如下:

       

    以上就构成了一个全连接网络,该网络使得线性回归具有更好的表达能力,其关键代码如下:    

# 输入特征维度为784,输出特征维度为1
nn.Linear(784, 200),
nn.ReLU(inplace=True),
nn.Linear(200, 200),
nn.ReLU(inplace=True),
nn.Linear(200, 1),
nn.ReLU(inplace=True),

 

 

3 逻辑回归(logistic regression)

 到目前为止,我们实现了线性回归,并应用全连接层使其具有更强的表达能力。

 对于分类问题(如10分类),一个可能的方案是将类别定义为1到10的整数,将分类问题转化为线性回归问题。

 但以上方案存在一个明显的缺陷,即多个分类之间被人为的赋予了序列关系,这与分类之间的真实相似性并没有关联。

 举例来说,对于0到9手写数字识别问题,7可能看起来更像1而不是更像6。

 当转化为线性回归问题后,假设程序预测图像分类为6.5,最终计算结果只能为6或者7,这显然与概率常识不一致!

 因此,需要使用其他方案改进分类问题,其关键思想是符合概率表达思维。

 引入one-hot编码 0:[1,0,...,0],1:[0,1,...,0],2:[0,0,1,...,0],... ,9:[0,...,0,1]

 1)该编码使得每个类之间不存在序列关系,

 2)通过比较预测值与编码之间的欧式距离来确定最终分类,

 3)手写数字7被预测为[0,.5,0,0,0,0,0,.5,0,0]是更加合理的。

 通过改进网络可实现10分类目标,如下图:

    

 

 。。。。。。

 。。。。。。

标签:current,函数,迭代,gradient,样本,基础,学习,points,深度
From: https://www.cnblogs.com/luofeiju/p/16963387.html

相关文章

  • C++入门级基础知识汇总
    知识来源:https://www.imooc.com/learn/1304https://www.runoob.com/cplusplus/cpp-tutorial.html 编程第一步导入头文件:#include<stdio.h>std=standard......
  • MarkDown入门学习总结教程
    Webelievethatwritingisaboutcontent,aboutwhatyouwanttosay–notaboutfancyformatting.译文:我们坚信写作写的是内容,所思所想,而不是花样格式.Markd......
  • MIT6.828学习笔记3(Lab3)
    Lab3:UserEnvironments在这个lab中我们需要创建一个用户环境(UNIX中的进程,它们的接口和实现不同),加载一个程序并运行,并使内核能够处理一些常用的中断请求。PartA:User......
  • sqli-labs靶场第23关(学习记录)
    第23关考察点:对注释符的过滤看一下代码发现是对注释符#和--的过滤,当我们传入内容包含注释符时,对应的注释符就被换成了"",因此注释就无效了?id=-1'unionsele......
  • CocosCreator基础
    跳转到底部目录CocosCreator项目结构:资源文件夹(assets)资源库(library)本地设置(local)项目设置(settings)project.json构建目标(build)CocosCreator小Tips1.Cos中的skew(倾斜角......
  • 深度学习炼丹-不平衡样本的处理
    前言一,数据层面处理方法1.1,数据扩充1.2,数据(重)采样数据采样方法总结1.3,类别平衡采样二,算法(损失函数)层面处理方法2.1,FocalLoss2.2,损失函数加权参考资料......
  • SSE与AVX指令基础介绍与使用
    SSE与AVX指令基础介绍与使用SSE/AVX指令属于Intrinsics函数,由编译器在编译时直接在调用处插入代码,避免了函数调用的额外开销。但又与inline函数不同,Intrinsics函数的代码......
  • 第六章:bootstrap基础
    bootstrap简介该框架已经帮你写好了很多的页面样式,你如果需要使用,只需要下载对应的文件,之后直接cv拷贝即可在使用bootstrap的时候所有的页面样式都只需要通过class来调节......
  • Spring boot属性文件加载和生效顺序深度分析
    springboot最核心的特性就是自动化配置,我们在学习springboot的时候,首要需要了解它的自动化配置原理,其次是属性文件的加载顺序,我认为这两点是学习springboot的重中之中。......
  • Oracle数据库PL/SQL学习笔记(一)
    Oracel数据库的基本管理:<spanstyle="font-size:18px;">createtablespacetestdatafile'E:\app\Administrator\oradata\orcl\test.dbf'--注意:名称test不要......