神经网络(一)

神经网络

1. 神经网络基础

2. 浅层神经网络分析

3. 卷积神经网络

4. 卷积神经网络MNIST数字图片识别


1. 神经网络基础

神经网络:想让计算机模拟大脑处理信息的过程。

如:有一杯水,手摸一下,收集温度信息,在神经元中进行传递,心中有一个默认值,看是否温度太高,还是太低。

  1. 感知机
    • 最早的基于神经网络的分类问题。
    • 有n个数据,通过权重与各数据之间的计算和,比较激活函数结果,得出输出(和线性回归特别像)。有一个阈值,输出超过阈值要干什么,不超过阈值要做什么。
    • 感知机解决的是分类的问题,线性回归解决回归问题。
    • 应用:很容易解决与,或,非问题。
      • x1,x2两个特征值,w1,w2两个权值。
      • 与:所有输入为1,输出为1,否则为0。w1=1,w2=1,阈值为1.5,只有输入(1,1)的输出值为1。
      • 或:只要有一个为1,输出就为1。
      • 异或问题:相同为0,不同为1,使用一个感知机无法很好的划分。(单个感知机解决不了的问题,可以增加感知机)
      • 逻辑回归:sigmoid,激活函数,进行分类。
  2. 人工神经网络
    1. 神经网路的发展

      • 定义:在机器学习和认知科学领域,人工神经网络(artificial neural network,缩写ANN),简称神经网络(:neural network,缩写NN)或类神经网络,是一种模仿生物神经网络的结构和功能的计算模型,用于对函数进行估计或近似。
      • 种类:
        • 基础神经网络:单层感知器,线性神经网络,BP神经网络,Hopfield神经网络等。
        • 进阶神经网络:玻尔兹曼机,受限玻尔兹曼机,递归神经网络等。
        • 深度神经网络:深度置信网络,卷积神经网络,循环神经网络,LSTM网络等。
      • 杰弗里·埃弗里斯特·辛顿。(英语:Geoffrey Everest Hinton)是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法的发明人之一,也是深度学习的积极推动者。
        • 上个世纪七八十代的时候,神经网路的雏形已经出现了,但是不被大多人所接受,主要由于神经网络的分类过程无法解释,觉得没有用,只有Hinton带着它的团队坚持到了现在。
    2. 神经网络

      • 感知机-->神经元-->多个-->神经网络
      • 特点:
        • 输入向量的维度和输入神经元的个数相同
        • 每个连接都有权值
        • 同一层神经元之间没有连接
        • 由输入层,隐层,输出层组成
        • 第N层和N-1层的所有神经元连接,也叫全连接层。
      • 组成:
        • 结构:神经网络中的变量可以是神经元连接的权重
        • 激活函数:大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。
        • 学习规则:学习规则制定了网络中的权值如何随着时间推进而调整。(反向传播算法)

      神经网络用于多分类问题。某一个样本-->得出属于全部类别的每一个概率。(softmax).有多少个类别,输出就是多少个值。

      • 神经网络API
        • tf.nn:提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation。(能体会到一步一步怎么做的。)
        • tf.layers:主要提供的高层的神经网络,主要和卷积相关的,对tf.nn的进一步封装。
        • tf.contrib:tf.contrib.layers提供能够将计算图中的网络层、正则化、摘要操作、是构建计算图的高级操作,但是tf.contrib包不稳定以及一些实验代码。

2. 浅层神经网络分析

  1. softmax回归


    softmax.png

神经元的输出值,经过softmax得出每一个分类的概率值。


softmax回归解释
  1. 损失计算
算法 策略 优化
线性回归 均方误差 梯度下降
逻辑回归 对数似然损失 梯度下降
神经网络 交叉熵损失 梯度下降,反向传播算法

正向传播:输入经过一层层的计算得出输出
反向传播:从损失计算开始,梯度下降更新权重

  • 交叉熵损失:


    交叉熵.png

    image.png
    • 一个样本就有一个交叉熵损失,求所有样本的损失,然后求平均损失。


      image.png

      如图所示,softmax得出的类别概率为左边的数字,样本的实际类别为右边的数字(使用了one-hot编码),用交叉熵的公式求出损失值,越小说明越准确,若softmax得出的类别概率与实际的一模一样,则交叉熵损失值为0。

  1. API介绍
    1. 全连接-从输入直接到输出
      • tf.matmul(a, b, name=None)+bias
        • return:全连接结果,供交叉损失运算
        • 不需要激活函数(因为是最后的输出)
    2. SoftMax计算、交叉熵
      • tf.nn.softmax_cross_entropy_with_logits(labels=None,logits=None,name=None)
        • 计算logits和labels之间的交叉熵损失熵
        • labels:标签值(真实值)
        • logits:样本加权之后的值
        • return:返回损失值列表
      • 损失值列表平均值计算
        • tf.reduce_mean(input_tensor)
    3. 损失下降API
      • tf.train.GradientDescentOptimizer(learning_rate)
        • learning_rate:学习率
        • minimize(loss):最小化损失
        • return:梯度下降op

你可能感兴趣的:(神经网络(一))