深度学习导论(1)深度学习概述

深度学习导论(1)深度学习概述

  • 课前准备
    • 课程所需环境以及相关资源
    • PyTorch安装
    • 配置Jupyter Notebook
  • 概述
    • 什么是人工智能?
    • 如何实现人工智能?
    • 人工智能、机器学习、神经网络、深度学习的相互关系
    • 浅层神经网络学习发展
    • 神经元模型
    • 深度学习的发展过程
    • 为什么从2012年至今深度学习那么火?
    • 深度学习的应用
    • 深度学习框架
    • TensorFlow2.x和1.x
  • 机器学习
    • 学习的本质
    • 神经元模型

最近学习了老师的深度学习课程,打算记录一下,顺带练习写博客,第一次写博客,如有不妥当的地方,欢迎大佬们指正~

课前准备

课程所需环境以及相关资源

  1. 本课程所需环境:
    python 3.6
    Pytorch stable 1.8.1
  2. 推荐相关资源:
    (1) Python/Pytorch
    官网
    莫烦python
    Deep Learning with PyTorch(Eli Stevens&Luca Antiga 2019)电子版
    (2) 线性代数
    线性代数应该这样学
    可汗学院:线性代数视频课
    (3) 机器学习
    Coursera上Andrew Ng的机器学习入门
    (4) 深度学习
    Coursera的Neural networks for Machine Learning
    Tensor Flow深度学习(龙龙老师)

PyTorch安装

首先下载安装anaconda,别忘了环境配置~
然后进行如下设置,否则安装太慢:

 conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config –set show_channel_urls yes
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

运行conda install pytorch torchvision,注意不要加“-c pytorch”, 因为“-c pytorch”会默认从pytorch官网下载安装包。

配置Jupyter Notebook

在新建的虚拟环境下使用Jupyter Notebook:

  1. 安装ipykernel
conda install ipykernel
  1. python -m ipykernel install –user –name envname –display-name “envsnamedisplay”
    注:envname为虚拟环境名,envsnamedisplay为在notebook中显示的虚拟环境名。
  2. 或者安装conda install nb_conda,然后在notebook中通过new或kernel菜单选择要使用的虚拟环境。
    注:采用步骤1和2安装完以后如果仍然提示找不到命令,则再按照3安装上nb_conda就可以了,安装完以后默认选择当前的虚拟环境。

概述

什么是人工智能?

  • 人工智能是指让机器获得像人类一样的智能机制的技术(1956,达特茅斯会议首次提出)
  • 目前无法实现能达到人脑智能水平的机器
  • 但在某个方面可以实现类似、接近或超过人类智能水平的机器。

如何实现人工智能?

  1. 早期(推理期):通过总结、归纳出一些逻辑规则,并将逻辑规则以计算机程序的方式来开发智能系统。
    缺点:这种显式的规则往往过于简单,很难表达复杂、抽象的规则。这一阶段被称为推理期。
  2. 1970年代,知识库+推理的方式,通过构建庞大复杂的专家系统来模拟人类专家的智能水平。

缺点:

  • 复杂,抽象的概念无法用在具体的代码实现。比如人类对图片的识别,对语言的理解过程无法通过既定规则模拟。
  • 为了解决这类问题,机器学习出现:通过让机器自动从数据中学习规则的研究学科,并在1980年代成为人工智能中的热门学科。
  • 在机器学习中,神经网络:通过神经网络来学习复杂、抽象逻辑。其经历了2起2落,并从2012年开始,由于效果极为显著,应用深层神经网络技术在计算机视觉、自然语言处理、机器人等领域取得了重大突破,部分任务上甚至超越了人类智能水平,开启了以深层神经网络为代表的人工智能的第3次复兴。深层神经网络有了一个新名字,叫做深度学习。

人工智能、机器学习、神经网络、深度学习的相互关系

深度学习导论(1)深度学习概述_第1张图片

  1. 人工智能包含很多方法,包括逻辑推理、搜索与求解、机器学习等等,机器学习是实现人工智能的一种方法;
  2. 神经网络是实现机器学习的一种方法;
  3. 深层神经网络是层数比较多的神经网络。
  4. 机器学习
    深度学习导论(1)深度学习概述_第2张图片
    深度学习导论(1)深度学习概述_第3张图片

浅层神经网络学习发展

深度学习导论(1)深度学习概述_第4张图片

神经元模型

神经网络最开始其实就是模拟人类神经元的模型,将人类的神经元数学化:
深度学习导论(1)深度学习概述_第5张图片

设 Σ为一个神经元,设x1,x2,…,xn为 Σ的n个输入,w为每个输入的权重,则神经元的输出 Σ = x1w1+x2w2+…+xnwn ,神经元的输出 Σ达到一定程度后,即达到阈值的时候,神经元就会激发。所以说,神经网络的思想就是模拟人脑内神经元的过程。神经元激发后,就会产生输出。以上过程为一个线性过程,为了使其变为非线性化,一般会在输出的基础上加上一个激活函数。

深度学习的发展过程

  • 2006年,Geoffery Hinton等人发现通过逐层预训练的方式可以较好地训练多层神经网络,并在MNIST手写数字图片数据集上取得了优于SVM的错误率,开启了第3次人工智能的复兴。
  • 2011年,Xavier Glorot提出了线性整流单元(Rectified Linear Unit,ReLU)激活函数,这是现在使用最为广泛的激活函数之一。
  • 2012年,Alex Krizhevsky提出了8层的深层神经网络AlexNet,它采用了ReLU激活函数,并使用Dropout技术防止过拟合,同时抛弃了逐层预训练的方式,直接在2块GTX580 GPU上训练网络。
  • 2014年,Lan Goodfellow提出了生成对抗网络,通过对抗训练的方式学习样本的真实分布,从而生成逼近度较高的图片。
  • 2016年,DeepMind公司应用深度神经网络到强化学习领域,提出了DQN算法,在Atari游戏平台中的49个游戏取得了人类相当甚至超越人类的水平;在围棋领域,DeepMind提出的AlphaGo和AlphaGo Zero智能程序相继打败了人类顶级围棋专家李世石、柯洁等;在多智能体协作的Dota2游戏平台,OpenAI开发的OpenAI Five智能程序在受限游戏环境中打败了TI8冠军OG队,展现出了大量专业级的高层智能的操作。

深度学习导论(1)深度学习概述_第6张图片

为什么从2012年至今深度学习那么火?

  • Hardware availability——硬件的可用性。硬件的性能越来越高,但是其成本却越来越低;
  • Data and algorithms——数据和算法。有很大的数据量可用,包含大量的公开数据集,统计的思想是基于大量的数据形成的;一些算法的出现(如BP算法、Dropout算法、激活函数ReLU、Bw算法、Nes算法等等)促进了深度学习的发展;
  • Deep learning frameworks——深度学习框架。代码量更少。

深度学习的应用

深度学习导论(1)深度学习概述_第7张图片

深度学习应用主要包含计算机视觉(CV),自然语言处理(NLP),强化学习(RL)等,图中列的是一些较火的方向。深度学习还有其它应用,如推荐系统(RS),推荐系统会融入多元信息,如文本、图像、音频信号、评分矩阵等等。

深度学习框架

  • Theano
  • Scikit-learn
  • Caffe
  • Torch
  • MXNET
  • Pytorch(采用动态图,精简灵活的接口,更具Python化,学术界推崇)
  • Keras(有两个版本的实现,一是Keras本身的实现,二是在TF中的实现,即tf.keras,TF唯一的高层接口)
  • TensorFlow(工业界具有完备的解决方案和用户基础,TF1.x采用静态图,难学,2019年推出TF2.0正式版本)

TensorFlow2.x和1.x

  • TensorFlow2是一个与TensorFlow1.x使用体验完全不同的框架,TensorFlow2不兼容TensorFlow1.x的代码,同时在编程风格、函数接口设计等上也大相径庭,TensorFlow1.x的代码需要依赖人工的方式迁移,自动化迁移方式并不靠谱。Google即将停止支持TensorFlow1.x,不建议学习TensorFlow1.x版本。
  • TensorFlow2支持动态图优先模式,在计算时可以同时获得计算图与数值结果,可以在代码中调试实时打印数据,搭建网络也像搭建积木一样,层层堆叠,非常符合软件开发思维。

机器学习

学习的本质

深度学习导论(1)深度学习概述_第8张图片

  1. Input:输入的样本。例如在做图片分类的时候,输入就是一些图片;在做语言识别的时候,输入就是一段一段的文本。
  2. Label:标签。每个输入的样本都有一个标签。例如做图像识别的时候,标签就是人或者动物。
  3. Model:机器学习模型。
    过程:设输入样本为xi,标签为其对应的yi,将xi放入模型当中进行预测,预测值predict为y,我们发现预测值和原始值(即标签值)有一定的偏差,有些预测是正确的,有些预测是错误的,这些偏差就被称为损失值,机器学习的最终目标就是让损失值最小,即让预测值和真实值之间的差距最小。
    学习的过程是一轮一轮迭代的。如一轮未满足损失值条件,则将模型进行更新权重,再将xi输入。产生y,与yi进行对比,再判断当前损失值是否符合条件,以此类推。迭代多次后,就会得到一组最优的参数(即权重),或者局部最优参数。
  • 前向传播:将样本放入模型中产生预测值的过程称为前向传播。
  • 反向传播:根据预测值和真实值之间的误差去调整模型中的参数的过程称为反向传播。
  • 学习的本质:机器学习 = 前向传播 + 反向传播
  • 架子:首先确定有几层,每层有几个神经元;再通过学习来学习出权重,那么架子和权重都有了,就形成了一个神经网络的具体模型。

神经元模型

  1. 神经元生物模型
    深度学习导论(1)深度学习概述_第9张图片

  2. 神经元数学模型与神经元线性模型
    深度学习导论(1)深度学习概述_第10张图片

深度学习导论(1)深度学习概述_第11张图片

对于数学模型(a),输入部分x就代表了神经元生物模型中的树突,而输出部分y就代表了神经元生物模型中的轴突,f代表了模型,θ则代表了模型中的参数。
深度学习导论(1)深度学习概述_第12张图片

对于线性变换(b),f (x) = Wx + b,展开成标量形式为:
深度学习导论(1)深度学习概述_第13张图片

注:b为偏置项。当n = 1时,那么w与b均为标量,模型就变为一元线性模型。

你可能感兴趣的:(深度学习,深度学习,pytorch,机器学习,神经网络)