论文学习之综述:《Deep learning》

文章目录

  • 论文学习之综述:《Deep learning》
    • 前言:
    • 第一部分:深度学习基础(1-4)页
      • 作者介绍:
      • 前期知识储备:
      • 背景介绍部分:(第一页supervised learning之前的内容)
      • 监督学习:(upervised learning标题下的内容)
        • 监督学习介绍:
        • 监督学习训练步骤:
        • 学习过程中做什么?:
        • 激活函数:
        • 随机梯度下降法:
        • 反向传播:
        • 补充内容:
    • 第二部分:CNN学习(4-6)页
      • 为什么要发明CNN:
      • CNN的基础:
        • 卷积核:
        • 池化层:
        • CNN样例:
      • 常用的CNN:
      • 补充:
    • 第三部分:循环神经网络RNN原理、论文中对未来的展望(7-9)页
      • RNN简单的理解:
      • 未来的展望:

前言:

将第一年安排书写到这,应用方面继续将婴儿监护系统做下去,开发OnePasswd软件解决密码多记不住的问题。论文方面跟学综述Deep learning、Alexnet、VGG、ResNet、Googlenet、YOLO、SSD等,复现完dl论文后尝试花一个月的时间用Guilite(我主要完成图形加速)发计算机工程核心期刊,试一试难度。

第一部分:深度学习基础(1-4)页

作者介绍:

Geoffrey Hinton:误差反向传播的创始人,并提出了玻尔兹曼机,2012年在imageNet比赛上使用改进版本卷积神经网络引起巨大轰动。

Yann LeCun:首先发明CNN并制作了minisit数据集

Yoshua Bengio:自然语言创始人,花书作者之一。

前期知识储备:

线性代数,概率论,梯度优化,约束优化、机器学习基础等知识(PS:其实我也会的不多,知道梯度是变化率最大的方向。。。)。

背景介绍部分:(第一页supervised learning之前的内容)

​ 下图是这篇论文介绍的深度学习应用领域,另外论文中表示,相比较传统方法如专家系统,深度学习不通过人为经验来设置特征提取器,主要是采用多层网络机制来进行学习,通过层层参数调整会逐步放大和结果有关的变化,和结果无关的特征会在训练中会慢慢缩小。

​ 图1:机器学习的应用领域和学习

监督学习:(upervised learning标题下的内容)

监督学习介绍:

​ 监督学习是指对有lab的数据进行学习,人和动物在学习过程中还有无监督学习,比如我们人在学习许多技能时候会发现哪些技能是有相同作用的。在深度学习领域发展较好的还是监督学习,无监督学习作为未来的突破点有很大的研究价值。

​ 图2:监督学习介绍

监督学习训练步骤:

​ 1. 收集三类别的图片,打标签
2. 训练过程中对输入图片输出一个得分向量
3. 设计好期望输出与实际输出向量的差距计算函数(目标函数)
4. 通过SGD或者BP算法更新每层神经元的W,达到目标函数最小。

学习过程中做什么?:

从论文的图1-a中可以看出如果你想输出数据属于哪条线,那么学习的过程中会捕捉到你这个特征,将两条线段的数据尽可能分开,便于区分。


​ 图3:隐藏层的工作

激活函数:

为什么深度学习要用非线性激活函数呢?生活中很多问题都是非线性,如果每层网络只用y=2x,y=0.5x这种线性的函数,那么我们得到的叠加结果还是一个线性的函数,它无法解决需要曲线来进行分类的问题。在深度学习中使用了很多经典的激活函数,常用的激活函数有如下几个:

图4:激活函数

随机梯度下降法:

​ 这个方法也是最常用的方法之一,改良的算法虽然性能好一些,但是由于要求二阶导会导致运算量过大。我分享一下纯手动的梯度下降代码(随机是指随机取数据进行梯度计算):

def _numerical_gradient_no_batch(f, x):#F是损失函数,x是w与b,它们作为变量进行变换h = 1e-4 # 0.0001grad = np.zeros_like(x)for idx in range(x.size):tmp_val = x[idx]x[idx] = float(tmp_val) + hfxh1 = f(x) # f(x+h)x[idx] = tmp_val - h fxh2 = f(x) # f(x-h)grad[idx] = (fxh1 - fxh2) / (2*h)x[idx] = tmp_val # 还原值return graddef numerical_gradient(f, X):if X.ndim == 1:return _numerical_gradient_no_batch(f, X)else:grad = np.zeros_like(X)for idx, x in enumerate(X):grad[idx] = _numerical_gradient_no_batch(f, x)return grad#这里可以返回grad的数组def  SGD()#只截取了一段代码,整个代码太长了,我没贴上来,核心就是更新参数。   for i in 10000:grad = numerical_gradient(x_batch, t_batch)# 更新参数for key in ('W1', 'b1', 'W2', 'b2'):network.params[key] -= learning_rate * grad[]loss = network.loss(x_batch, t_batch)train_loss_list.append(loss)if i % iter_per_epoch == 0:train_acc = network.accuracy(x_train, t_train)test_acc = network.accuracy(x_test, t_test)train_acc_list.append(train_acc)test_acc_list.append(test_acc)print("train acc, test acc | " + str(train_acc) + ", " + str(test_acc))

反向传播:

反向传播在求gradient上不会像梯度下降法那样,循环求x+h与f(x+h),BP算法通过一次前向传播之后可以得到各个层的值,将这些值保存下来可以进行梯度计算。反向传播的时候会使用sigmoid_grad等(已经推导好的链式法函数)*后面传来的链式变化数值去计算每一层的W,B,这样算起来更为快捷和高效(因为层化,并且前向传播值可以直接用来反向传播)。

    def gradient(self, x, t):W1, W2 = self.params['W1'], self.params['W2']b1, b2 = self.params['b1'], self.params['b2']grads = {}batch_num = x.shape[0]# forwarda1 = np.dot(x, W1) + b1z1 = sigmoid(a1)a2 = np.dot(z1, W2) + b2y = softmax(a2)# backwarddy = (y - t) / batch_numgrads['W2'] = np.dot(z1.T, dy)grads['b2'] = np.sum(dy, axis=0)da1 = np.dot(dy, W2.T)dz1 = sigmoid_grad(a1) * da1grads['W1'] = np.dot(x.T, dz1)grads['b1'] = np.sum(dz1, axis=0)return grads

补充内容:

​ 这篇论文是15年发布的,作者想告诉大家一些深度学习的误解,刚开始一些人认为深度学习这种不需要预先训练的方法是不可靠的,但是随着硬件性能提升如GPU、大数据时代的来临,经过海量数据训练得到结果具有很好的泛化能力。其次人们认为梯度下降法会陷入局部最优解,这样会导致无法求出全局最优解。作者给出了实验结果表示:在选择较为平滑的激活函数之后,得出来的局部最优解很大可能是全局最优解,即使不是也相差不远,其实真正的问题是如何解决梯度消失导致没法继续走下去。

第二部分:CNN学习(4-6)页

为什么要发明CNN:

​ 全连接网络对于非关联的输入x可以很好训练出参数w,但图像这种局部有关联的输入数据将其展开成向量形式进行全链接处理会忽略图像局部关联,什么事局部关联呢?局部关联是指图形的一块小区域在像素级别上有一定的相关性,如果能将这种小区域内的关联性在神经网络中体现出来,那么得到的精度肯定要比之前要好的多。针对这一个需求,三位作者中第二个作者发明了cnn,提出了通过卷积层和池化层来提取输入图片的特征,训练出合适的参数。我们知道一层的卷积核实际上就是对图像进行像素边缘化处理,这样卷积后的图像放在下一层的输入中再次卷积,会提取出一些更为抽象的数据特征,并且多维度不同的卷积核提取出来的局部特征是不一样的。

CNN的基础:

卷积核:

下图就是卷积核在卷积的过程,在这过程中有步长padding和卷积核大小这两个概念,一般卷积核大小是3*3的,在卷积核内部数值设定时候是有一定的技巧和经验的,不同的数据设置会反映出图像的不同特征。常用的卷积核不多。


​ 图5:卷积核

池化层:

将语义相近的特征进行融合,求平均或者是求最大。


图6:池化层

CNN样例:

​ 下图是CNN模型图示,首先一只狗有三个通道,将其降维度到二维,通过第一层卷积提取边缘,进行激活函数后再进行池化层衰减上一层微弱变化的影响。后面的卷积会逐步识别图像的纹理,组件,最终到物体。


图7:CNN工作流程

常用的CNN:

AlexNet

LetNet

VGG

GoogelNet

ResNet

DenseNet

FaceNet

补充:

GPU,Relu,Dropout是CNN成功的驱动。

第三部分:循环神经网络RNN原理、论文中对未来的展望(7-9)页

RNN简单的理解:

RNN是循环序列网络,在自然语言处理中,一句话相邻的单词和字之间是有相关性的,RNN能捕捉这种相关性,通过输入一个“我” 可以预测句子中下一个字,如预测”是“概率30%,”可以“概率20%。同时在处理语言时候要结合上下文,所以设计一个机制来捕捉上下文语义,用来更准确的预测文本。

未来的展望:

无监督学习:可能是下一个研究的突破点,主要分为聚类和关联问题。聚类问题是在数据中发现内在的分组,关联问题是发现看似无关的数据之间的联系。在人类和动物学习中无监督学习还是占据主导作用,感觉如果能很好的实现无监督学习,那么离强人工智能也不会太远。

强化学习:通过奖励机制来加强我们想要实现的结果。

GAN: 还不懂。。

论文学习之综述:《Deep learning》相关推荐

  1. 多模态学习(Multimodal Deep Learning)研究进展综述(转载)

    转载: AI综述专栏--多模态学习研究进展综述 https://zhuanlan.zhihu.com/p/39878607 文章目录 一.引言 二.主要研究方向及研究进展 (一)多模态表示学习 (二) ...

  2. 几何深度学习(Geometric Deep Learning)技术

    几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...

  3. 【论文泛读】 Deep Learning 论文合集

    [论文泛读] Deep Learning 论文合集 文章目录 [论文泛读] Deep Learning 论文合集 Batch Normalization: Accelerating Deep Netw ...

  4. 【论文笔记】Multi-task deep learning based CT imaging analysis for COVID-19 pneumonia: Classification and

    声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV.NLP.Data Fusion.Digital Twin 论文标题:Multi-task deep le ...

  5. 深度学习概述教程--Deep Learning Overview

          引言         深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...

  6. 深度学习加速器堆栈Deep Learning Accelerator Stack

    深度学习加速器堆栈Deep Learning Accelerator Stack 通用张量加速器(VTA)是一种开放的.通用的.可定制的深度学习加速器,具有完整的基于TVM的编译器堆栈.设计了VTA来 ...

  7. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  8. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips

    文章目录 一.深度学习步骤回顾 二.常规指导 三.训练过程中Loss很大 3.1 原因1:模型过于简单 3.2 原因2:优化得不好 3.3 原因1 or 原因2 ? 四.训练过程Loss小.测试过程L ...

  9. 贝叶斯深度学习(Bayesian Deep Learning)2020 最新研究总结

    关注上方"肉眼品世界",选择星标, 作者丨Ziyue Wu@知乎 来源丨https://zhuanlan.zhihu.com/p/283633149 编辑丨极市平台 本文仅作学术分 ...

最新文章

  1. Struts2用户输入验证(6)
  2. android绘制高亮区域,实现高亮某行的RecyclerView效果
  3. xftp连接海康摄像头报错:sftp子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效
  4. 世界上最遥远的距离(泰戈尔)
  5. 武汉大学计算机考研 专业课程,2018武汉大学计算机考研复试经验贴
  6. mysql两个表查询修改_MySQL:查询、修改(二)
  7. 关于异常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解决办法
  8. 【LeetCode笔记】112 113. 路径总和 I II(Java、递归、DFS)
  9. 最大熵阈值python_第六章-逻辑斯蒂回归和最大熵模型
  10. SQL2008数据类型
  11. 27. JavaScript Cookies
  12. 了解Spring AOP吗
  13. 修改Linux里的hosts文件
  14. QQ空间自动点赞评论助手 微博自动点赞自动转发神器带源码(超简单)
  15. Android 应用是如何启动 binder 机制的?
  16. PR(Premiere)安装插件Aescripts BeatEdit(Beat Edit)后无法打开的解决方案
  17. VS中打开C项目源文件、头文件分类文件夹不见了?这样操作打开!
  18. iBeacon 介绍
  19. 100+道Java经典面试题(面中率高)
  20. 用三个步骤实现响应式网页设计

热门文章

  1. 安装好tomcat后,启动tomcat点击 startup.bat 窗口一闪而过怎么解决
  2. HP LoadRunner 11.00使用
  3. 【语义分割系列:七】Attention Unet 论文阅读翻译笔记 医学图像 python实现
  4. cad字体渐变_CAD怎么填充图案和渐变色,看完你就知道了
  5. 10种具有代表性的三维GIS软件系统
  6. matlab 的优化函数 整理
  7. 九、CentOS7安装HDF5
  8. 虚拟机VMware最详细下载与安装教程!
  9. 欧姆龙PLC和触摸屏基于PLC的楼宇热水站监控系统设计
  10. 大衍求一术的计算方法