欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度学习之神经网络

程序员文章站 2022-03-09 09:15:24
...

深度学习

神经网络

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 人工神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。
深度学习之神经网络

杰弗里·埃弗里斯特·辛顿 (英语:Geoffrey Everest Hinton)(1947年12月6日-)是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法的发明人之一,也是深度学习的积极推动者。

深度学习之神经网络
深度学习之神经网络

神经网络的种类:

基础神经网络:单层感知器,线性神经网络,BP神经网络,Hopfield神经网络等
进阶神经网络:玻尔兹曼机,受限玻尔兹曼机,递归神经网络等
深度神经网络:深度置信网络,卷积神经网络,循环神经网络,LSTM网络等

神经网络的特点

输入向量的维度和输入神经元的个数相同
每个连接都有个权重
同一层神经元之间没有连接
由输入层,隐层,输出层组成
第N层与第N-1层的所有神经元连接,也叫全连接

深度学习之神经网络

深度学习之神经网络

神经网络的组成

结构(Architecture)例如,神经网络中的变量可以是神经元连接的权重
激励函数(Activity Rule)大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。
学习规则(Learning Rule)学习规则指定了网络中的权重如何随着时间推进而调整。(反向传播算法)

SoftMax回归

我们使用sigmoid只能做一个二分类,softmax是一个sigmoid非常相似的多分类算法,计算每个样本是那种类别的概率为多少

SoftMax公式 Si=eijejS_i = \frac{e^i}{\sum_je^j}
深度学习之神经网络
深度学习之神经网络

TensorFlow神经网络API模块

1.tf.nn:提供了神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、RNN等等
2.tf.layers:主要提供高层的网络,主要和卷积相关,对tf.nn进一步封装
3.tf.contrib:网络层、正则化、摘要操纵、构建计算图等高级操作
one-hot编码(独热码)
独热码是一种类别代表一种类别型的数字,常用于分类目标值的处理

tf.one_hot(indices=数据标签,depth=类别数)

深度学习之神经网络

神经网络中的交叉熵损失函数

Hy′(y)=−∑y′ilog(yi)
例如:loss=−(0∗log(0.2)+1∗log(0.7)+0∗log(0.1))=0.36
y′i是真实的结果
yi是预测的结果

算法 分类标准 损失策略 优化
线性回归 None 均方误差 梯度下降
逻辑回归 sigmoid 对数似然估计 梯度下降
神经网络 softmax 交叉熵 反向传播-梯度下降

实际熵交叉熵和逻辑回归中的对数似然很相似,一个是二分类估计,一个是多分类估计,它们都是衡量不同类别差异的方式。

tf.nn.softmax_cross_entropy_with_logits(labels=None,logits=None,name=None)计算logits和labels之间的交叉损失熵
labels:标签值(真实值)
logits:样本加权之后的值(期望)
return:返回损失值列表

流程

1.获取数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
2.全链接,tf.matmul(a, b,name=None)+bias
3.SoftMax计算、交叉熵
4.平均损失值计算(tf.reduce_mean(input_tensor))
5.反向传播-梯度下降优化拟合度
tf.train.GradientDescentOptimizer(learning_rate)
learning_rate:迭代率
minimize(loss):最小化损失
6.计算准确度
equal_list = tf.equal(tf.argmax(y, 1), tf.argmax(y_label, 1))
accuracy = tf.reduce_mean(tf.cast(equal_list, tf.float32))

相关标签: 数据