本文仅供学习使用
本章需要提前学习机器学习相关内容
CV深度学习基础Ch01-深度学习概述
1. 机器学习回顾
1.1 神经网络的来源
大脑是由处理信息的神经元细胞和连接神经元的细胞进行信息传递的突触构成的。树突 (Dendrites)
从一个神经元接受电信号,信号在细胞核(Cell Body)
处理后,然后通过轴突(Axon)
将处理的信号传递给下一个神经元。
一个神经元可以看作是将一个或多个输入处理成一个输出的计算单元。
通过多个神经元的传递,最终大脑会得到这个信息,并可以对这个信息给出一个合适的反馈。
1.2 直观案例
1.3 感知器模型/Logistic 回归
感知器是一种模拟人的神经元的一种算法模型,是一种研究单个训练样本的二元分类器,是SVM和人工神经网络(ANN, Artificial Neural Networks)
的基础。
一个感知器接受几个二进制的输入,并产生一个二进制的输出,通常的表达方式如下:
1.4 Softmax回顾
Softmax回归是logistic回归的一般化,适用于K分类的问题。
2. 感知器
将多个感知器进行组合,就可以得到一个多层感知器的网络结构,网络中的每个节点我们叫做神经元,这个结构也就叫做神经网络。
2.1 感知器神经元直观理解之逻辑与
单个神经元完成逻辑与功能
2.2 感知器神经元直观理解之逻辑与
单个神经元完成逻辑或功能
2.3 感知器神经元直观理解之非线性可分
2.4 感知器网络理解以及S型神经元
其实只要将网络中的权重或者偏置项稍微的做一点小的改动,都会导致最终的输出发生一定的变化。但是在感知器神经网络中,单个感知器上的权重或者偏置项发现一点小的变化,最终的输出要不不变,要不完全翻转(因为只有两种取值0和1),这种翻转会导致接下来的感知器可能发生复杂的完全没法控制的变化,这样会导致我们的网络很难得到最终的逼近结果。
- 针对感知器网络的这种很难学习的问题,引入
S型神经元
来代替感知器,从而解决这个问题。 - 从感知器模型中,我们可以将单个神经元的计算过程看成下列两个步骤:
- 先计算权重w和输入值x以及偏置项b之间的线性结果值z:z=wx+b
- 然后对结果值z进行一个数据的sign函数(变种)转换,得到一个离散的0/1值 : y=int((sign(z)+1)/2)
- 在S型神经元中,和感知器神经元的区别在于:
- 对于结果值z的转换,采用的不是sign函数进行转换,是采用平滑类型的函数进行转换,让输出的结果值y最终是一个连续的,S型神经元转指使用的是sigmoid函数。该转换函数也被称为激活函数。
3. 神经网络
3.1 神经网络来源之“神经元”
- 输入:x1、x2、x3和截距+1;
- 输出:函数hw,b(x),其中w权重和b偏置项是参数
3.2 激活函数
激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。
激活函数的主要特性是:可微性、单调性、输出值的范围可控;
常见的激活函数:Sign函数、Sigmoid函数、Tanh函数、ReLU函数、P-ReLU函数、Leaky-ReLU 函数、ELU函数、Maxout函数等
3.3 神经网络之结构
3.3.1 神经网络之浅层神经网络
添加少量隐层的神经网络就叫做浅层神经网络;也叫作传统神经网络,一般为2隐层的神经网络 (超过两隐层的话,效果会差很多)
3.3.2 神经网络之深度神经网络
增多中间层(隐层)的神经网络就叫做深度神经网络(DNN)
;可以认为深度学习是神经网络的一个发展。
3.4 神经网络之非线性可分
对线性分类器的 ‘与‘ 和 ‘或‘ 的组合可以完成非线性可分的问题;即通过多层的神经网络中加入激活函数的方式可以解决非线性可分的问题。
3.5 神经网络之过拟合
- 理论上来讲,单隐层的神经网络可以逼近任何连续函数(只要隐层的神经元个数足够的多 < 一个神经元将数据集分为两类>)
- 虽然从数学表达上来讲,效果一样,但是在网络工程效果中,多隐层的神经网络效果要比单隐层的神经网络效果好
- 对于一些分类的问题来讲,三层的神经网络效果优于两层的神经网络,但是如果把层次不断增加(4,5,6,7…),对于最终的效果不会产生太大的变化
- 提升隐层层数或者神经元个数,神经网络的“容量”会变大,那么空间表达能力会变强(模型的预测能力),从而有可能导致过拟合的问题
- 对于视频/图片识别等问题,传统的神经网络(全连接神经网络)不太适合