深度学习——神经网络

65 阅读4分钟

神经网络——主要层次:

数据输入层:Input Layer

卷积计算层:CONV Layer

ReLU激励层:ReLU Incentive Layer

池化层:Pooling Layer

全连接层:FC layer

备注:可能都有

一般的结构

卷积——激活——池化(——卷积——激活——池化)(——卷积——激活——池化)——全连接

常用的神经网络

卷积神经网络(Convolutional Neural Network) 循环神经网络(Recurrent Neural Network) 生成对抗网络(Generative Adversarial Networks) 深度强化学习(Deep Reinforcement Learning)

张量(多维数组)

创建 转换成numpy 常用函数(括加法、元素乘法和矩阵乘法) 变量

tf.keras介绍

image.png image.png

常用方法

深度学习实现的主要流程: 1.数据获取 2.数据处理 3.模型创建与训练 4.模型测试与评估 5.模型预测

代码编写流程 1.导入tf.keras 2.数据输入 3.模型构建 4.训练与评估

  • 配置训练过程:
  • 模型训练
  • 模型评估
  • 模型预测 5.回调函数

示例:鸢尾花识别

共有 1.相关的库的导入 2.数据展示和划分 * 读取数据、展示数据 * 利用seaborn中pairplot函数探索数据特征间的关系 * 用train_test_split将数据划分为训练集和测试集

后续实现方式有两种:

3.sklearn实现

  • 实例化LogisticRegressionCV分类器
  • 用fit方法进行训练
  • 用训练好的分类器进行预测
  • 计算准确率

4.tf.keras实现 1 数据处理:标签值进行热编码 2 模型搭建:设置各个层级的神经元个数 3 模型训练和预测:

  • 模型编译(设置模型的相关参数:优化器,损失函数和评价指标)
  • 模型训练
  • 模型评估:计算模型的损失和准确率

神经网络

人工神经网络( Artifi cial Neural Network, 简写为ANN)也简称为神经网络(NN)

神经网络中信息只向一个方向移动, 即从输入节点向前移动,通过隐藏节点,再向输出节点移动

网络中没有循环或者环。

其中的基本构件是: 输入层:即输入x的那一层 输出层:即输出y的那一层 隐藏层:输入层和输出层之间都是隐藏层

特点是: 同一层的神经元之间没有连接。 第N层的每个神经元和第N-1层的所有神经元相连,第N-1层神经元的输出就是第N层神经元的输入。 每个连接都有一个权值。

激活函数:

目的:引入非线性(线性和非线性一起会生成一个非线性的)

Sigmoid/logistics函数:数据太大或者太小时,不会呈现变化(看下图像就知道) tanh(双曲正切曲线):比Sigmoid好的是中间点在0点 RELU:好用,酷酷用 LeakReLu SoftMax 其他激活函数 image.png

如何选择激活函数: 优先选择RELU激活函数 如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。 如果你使用了Relu, 需要注意一下Dead Relu问题, 避免出现大的梯度从而导致过多的神经 元死亡。 不要使用sigmoid激活函数,可以尝试使用tanh激活函数

输出层 二分类问题选择sigmoid激活函数 多分类问题选择softmax激活函数 回归问题选择identity激活函数

参数初始化

随机初始化(从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数W进行初始化) 标准初始化(权重参数初始化从区间均匀随机取值) Xavier初始化(正态化Xavier初始化、标准化Xavier初始化) 标准化的he初始化

神经网络的搭建

tf.Keras中构建模有两种方式: 1.Sequential构建(按一定的顺序对层进行堆叠,即,设置几层一层几个神经源元) 2.Model类构建(而后者可以用来构建较复杂的网络模型)

主要参数: units: 当前层中包含的神经元个数 Activation: 激活函数,relu,sigmoid等 use_bias: 是否使用偏置,默认使用偏置 Kernel_initializer: 权重的初始化方式,默认是Xavier初始化 bias_initializer: 偏置的初始化方式,默认为0

通过Sequential构建

image.png

image.png

利用function API构建

image.png

通过model的子类构建

image.png

image.png

神经网络的优缺点

1.优点

  • 精度高,性能优于其他的机器学习方法,甚至在某些领域超过了人类
  • 可以近似任意的非线性函数
  • 随之计算机硬件的发展,近年来在学界和业界受到了热捧,有大量的框架和库可供调用

2.缺点

  • 黑箱,很难解释模型是怎么工作的
  • 训练时间长,需要大量的计算力
  • 网络结构复杂,需要调整超参数

小数据集上表现不佳,容易发生过拟合