深度学习01——入门基础 基于Python

目录

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)

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

深度学习01——入门基础 基于Python_第1张图片

 

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

深度学习01——入门基础 基于Python_第2张图片

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

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

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

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

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


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

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

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

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

深度学习01——入门基础 基于Python_第3张图片

 

6.激活函数

1)什么是激活函数?

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

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

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

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

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

函数 表达式 图像 适用处或优点 缺点
Softmax  深度学习01——入门基础 基于Python_第4张图片  深度学习01——入门基础 基于Python_第5张图片

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

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

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

  • 在零点不可微;
  • 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
ReLU  深度学习01——入门基础 基于Python_第6张图片   深度学习01——入门基础 基于Python_第7张图片 

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

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

Leaky ReLU

 深度学习01——入门基础 基于Python_第8张图片   深度学习01——入门基础 基于Python_第9张图片 

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 深度学习01——入门基础 基于Python_第10张图片

深度学习01——入门基础 基于Python_第11张图片

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

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

  • 在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。

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

你可能感兴趣的:(python,深度学习,深度学习,人工智能,机器学习)