目录

1.知道什么是深度学习

2.机器学习和深度学习的区别

3.深度学习的应用场景

4.常见的深度学习框架

5.为什么要学习Pytorch框架

5.神经网络的介绍:

1).概念:

2).神经元

3).单层神经网络(感知器)

4).两层神经网络(多层感知器)

5).多层神经网络(深度学习)

6.激活函数

1)什么是激活函数?

2)为什么要使用激活函数?

3).五种常见的激活函数


1.知道什么是深度学习

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。是机器学习得分支,是一种以人工神经网络为架构,对数据进行特征学习的算法。

2.机器学习和深度学习的区别

深度学习 机器学习
提取过程 自动的进行特征抽取 人工的特征抽取过程
数据量 数据少,效果不是特别好 数据多,效果不是特别好

3.深度学习的应用场景

a).图像处理:物体识别、场景识别、人物检测跟踪、人物身份认证。

b).自然语言处理技术:机器翻译、文本识别、聊天对话。

c).语言技术:语音技术。

4.常见的深度学习框架

目前企业中常见的学习框架有很多,TensorFlow,Caffe2,Keras,Theano,Pytorch,Chainer,DyNet,MXNet,and CNTK等等

5.为什么要学习Pytorch框架

TensorFlow与Pytorch的区别
TensorFlow Pytorch
由不同的向导创建的 Tensorflow 基于 Theano,由 Google 开发 PyTorch 基于 Torch,由 Facebook 开发
这些框架定义计算图的方式 在 Tensorflow 中,必须定义模型的整个计算图,然后运行您的 ML 模型,也就是说在TensorFlow中是静态图机制。 虽然Tensorflow 2.0已经引入了动态图机制Eager模式 在 PyTorch 中,可以随时随地定义/操作您的图形,也就是说是 动态图机制 。这在 RNN 中使用可变长度输入时比较有用。
学习难易程度 Tensorflow 的学习曲线比 PyTorch 更难一点,怎么说?PyTorch更符合Python和建设ML车型感觉更直观一些。另一方面,使用 Tensorflow的话,必须更多地了解它的工作原理(会话、占位符等)。 PyTorch更符合Python和建设ML车型感觉更直观一些。
工具差别 TensorFlow中的TensorBoard 可以直接在浏览器中可视化 ML 模型。 PyTorch 没有TensorBoard这样的工具,尽管可以使用像 Matplotlib 这样的工具。

所以对于初学者直接以Pytorch为切入点,它整体来讲API较为清晰,文档较为清晰,比TensorFlow更接近于Python,调试也比较好调试,尤其是当你引用API的时候,Pytorch的API是一个框架下来的,他不会有很多混杂的地方。而TensorFlow里面有1.x API 2.x API Keras API,有时一个功能需要三个API。等到将Pytorch学完之后可以在学习TensorFlow。

5.神经网络的介绍:

1).概念:

全名为人工神经网络(Artificial Neural Network),缩写为:ANN,简称为神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型,用于对函数进行估计或近似。

和其他机器学习方法一样,神经网络已经被用于解决各种各样的问题,例如,机器学习和语音识别。这些问题都是很难被传统基于规则的编程所解决的。

2).神经元

a)这里的神经元指的是人工神经网络中的神经元。神经元是一种处理单元,是对人脑组织的神经元的某种抽象、简化和模拟。是人工神经网络的关键部分。通过神经元,人工神经网络可以以数学模型模拟人脑神经元活动,继而进行高效的计算以及其他处理。2)

应用到计算机中,有一些输入,然后给一个输出。应用到数学中,在数学上,在机器学习中的神经元就是一个数学函数的占位符,它仅有的工作就是对输入使用一个函数,然后给一个输出。

b)神经元与神经元之间的连接
神经元与其它神经元之间的连接具有权重,也就是说,它可以和前一层神经网络层中的所有神经元有连接。每一个连接都有各自的权重,通常情况下是一些随机值。这个权重可以是负值,正值,非常小,或者非常大,也可以是零。和这个神经元连接的所有神经元的值都会乘以各自对应的权重。然后,把这些值都求和。
c)偏差bias(一般简称为b)
用来避免输出为零的情况,并且能够加速某些操作,这让解决某个问题所需要的神经元数量也有所减少。这个bias也是一个数字,有些时候是一个常量(经常是-1或者1),例如上面的图中的+1,有些时候会有所变化。这个总和最终被输入到一个激活函数,这个激活函数的输出最终就成为这个神经元的输出。

a1,a2……an为各个输入的分量,v1,v2…vn为各个输入分量对应的权重,b为偏置项,f为激活函数(非线性传递函数),t为神经元的输出(一般为标量)。

3).单层神经网络(感知器)

在“感知器”中,有两个层次。分别是输入层和输出层。输入层里的“输入单元”只负责传输数据,不做计算。输出层里的“输出单元”则需要对前面一层的输入进行计算。

4).两层神经网络(多层感知器)

两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。此时,中间层和输出层都是计算层。我们扩展上节的单层神经网络,在右边新加一个层次(只含有一个节点),在两层神经网络中,我们不再使用sgn函数作为函数g,而是使用平滑函数sigmoid作为函数g。我们把函数g也称作激活函数(active function)。

5).多层神经网络(深度学习)

与两层层神经网络不同。多层神经网络中的层数增加了很多。

增加更多的层次有什么好处?更深入的表示特征,以及更强的函数模拟能力。

更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。

6.激活函数

1)什么是激活函数?

激活函数(Activation functions)对于人工神经网络 [1]  模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

2)为什么要使用激活函数?

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

3).五种常见的激活函数

函数 表达式 图像 适用处或优点 缺点
Softmax   

Softmax 是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

Softmax 与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。

  • 在零点不可微;
  • 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
ReLU      

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点:

  • 当输入为正时,不存在梯度饱和问题。
  • 计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。
  1. Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;
  2. 我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

Leaky ReLU

     

Leaky ReLU 通过把 x 的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度(zero gradients)问题;

  1. leak 有助于扩大 ReLU 函数的范围,通常 a 的值为 0.01 左右;
  2. Leaky ReLU 的函数范围是(负无穷到正无穷)。
从理论上讲,Leaky ReLU 具有 ReLU 的所有优点,而且 Dead ReLU 不会有任何问题,但在实际操作中,尚未完全证明 Leaky ReLU 总是比 ReLU 更好。
Tanh

tanh 是一个双曲正切函数。tanh 函数和 sigmoid 函数的曲线相对相似。但是它比 sigmoid 函数更有一些优势。

首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;

  • 在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。
在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。
Sigmoid    
  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;
  • 用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;
  • 梯度平滑,避免「跳跃」的输出值;
  • 函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;
  • 明确的预测,即非常接近 1 或 0。
  • 倾向于梯度消失;
  • 函数输出不是以 0 为中心的,这会降低权重更新的效率;
  • Sigmoid 函数执行指数运算,计算机运行得较慢。

深度学习01——入门基础 基于Python相关推荐

  1. 深度学习与计算机视觉:基于Python的神经网络的实现

    在前面两篇文章介绍了深度学习的一些基本概念,本文则使用Python实现一个简单的深度神经网络,并使用MNIST数据库进行测试. 神经网络的实现,包括以下内容: 神经网络权值的初始化 正向传播 误差评估 ...

  2. 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码

    入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...

  3. 深度学习入门:基于Python的理论与实现①

    深度学习入门:基于Python的理论与实现① 机器学习的三大要素 第一章python入门 1.Numpy 1.1.numpy的N维数组 1.2.numpy广播 1.3访问元素 2.Matplotlib ...

  4. 【深度学习入门:基于Python的理论与实现】书本学习笔记 第三章 神经网络

    文章目录 1. 阶跃函数的实现 2. 函数图形 2.1 阶跃函数 2.2 sigmoid 函数 2.3 ReLU 函数 3. 多维数组的运算 3.1 矩阵乘法 3.2 神经网络的内积 4. 三层神经网 ...

  5. 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)

    将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...

  6. 读书笔记:《深度学习入门:基于python的理论与实现》

    基于python的深度学习入门 <Deep Learning from Scratch> 这是本人在关于深度学习领域所阅读的第一本书,即日本程序员斋藤康毅著,陆宇杰译作的<深度学习入 ...

  7. 01.神经网络和深度学习 W2.神经网络基础

    文章目录 1. 二分类 2. 逻辑回归 3. 逻辑回归损失函数 4. 梯度下降 5. 导数 6. 计算图导数计算 7. 逻辑回归中的梯度下降 8. m个样本的梯度下降 9. 向量化 10. 向量化的更 ...

  8. 深度学习小白入门教程-基础环境篇

    深度学习小白入门教程-基础环境篇 如有图片显示失败,请回小主主页查看~ Anaconda 安装包下载方式一:官网(科学上网比较慢,不推荐) 安装包下载方式二:清华镜像(推荐) 具体安装步骤(跟着箭头来 ...

  9. 视频教程-人人都会深度学习之Tensorflow基础入门-深度学习

    人人都会深度学习之Tensorflow基础入门 大数据工程师/算法工程师/大数据讲师,毕业于西华大学软件工程专业.在大数据领域有着丰富的实战经验. 擅长领域:Spark/Hadoop.算法设计及系统架 ...

最新文章

  1. Java中利用socket实现简单的服务端与客户端的通信(入门级)
  2. 中国钢筋加工设备运营现状与未来前景规划报告2022-2028年版
  3. C++和Lua交互教程(基于LuaBridge)
  4. oracle 创建表空间_Oracle 创建和管理表
  5. Python求解啤酒问题(携程2016笔试题)
  6. 数据库没有备份---应如何还原丢失的数据
  7. [UML]UML系列——类图class的实现关系Realization
  8. 蒙特卡洛模拟分析市场风险
  9. 去掉GaussView 3.07启动警告窗口的完整解决方案
  10. xshell4连接ubuntu20.04失败,提示“找不到匹配的key exchange算法“
  11. Excel加载“宏”
  12. O'Stolz定理的应用
  13. 深度学习笔记:DCN
  14. VirtualBox设置桥接网络
  15. linux内核编译命令 理解,谢烟客---------Linux之理解内核、内核模块、编译内核
  16. 第一章: 准备面试要知己知彼
  17. 如何调用外部webservice 接口来发送短信
  18. xxx牌JUC学习加油奥利给001初始篇章
  19. 爬虫练习 -- 链家
  20. 什么是物联网 (IoT)?

热门文章

  1. .NET Data Provider
  2. 浅谈provide与inject
  3. 树莓派 docker homeassistant supervisor安装
  4. 第1章 语言处理与Python
  5. 分区助手里如何从临近盘(如D盘)抽取一定的空间给已经快满了的盘(如E盘)(博主推荐)(图文详解)...
  6. 硬件学习应涉及到的几个方面?
  7. jsp标签与指令总结
  8. emmc和MMC的区别
  9. C# 打印调试信息到DebugView
  10. 除留余数法构造哈希函数并用链地址法处理哈希冲突【C++实现】