美文网首页
神经网络基础知识

神经网络基础知识

作者: foochane | 来源:发表于2018-12-06 23:30 被阅读20次

    1 例子

    神经元

    使用下面的例子来进行说明:


    今天去不去踢球? 有如下原因:
    天气冷吗?
    跟我常配合的好友去吗?
    是不是晚饭前?

    这些原因为判断去不去踢球的依据,即输入,分别设为x1,x2,x3(取值为1或0),对于这三个原因,我们还有不同的权重,分别为w1,w2,w3。
    当x1w1+x2w2+x3*w3>=threshold的时候就去踢球。

    假设 w1 = 2, w2 = 6, w3 = 3, threshold = 5,输入x1,x2,x3值就可以判断出结果。

    实际模型更加复杂:


    w,x 是向量, b=-threshold

    b:多容易输出1,或者大脑多容易触发这个神经元

    相当于与非门 (NAND gate):

    输入00, (−2)∗0+(−2)∗0+3=3, 输出1

    输入11, (−2)∗1+(−2)∗1+3=−1, 输出0

    与非门可以模拟任何方程!

    另外,我们发现使用之前的模型:
    在0处,x值只要变化一点,输出有变化很大


    为了输出更加的平滑,模拟更细微的变化,输入和输出数值从0和1,到0,1之间的任何数,引入了Sigmoid 神经元:

    2 神经网络结构

    假设识别一个手写图片:
    如果图片是6464, 输入层总共有6464 = 4096个神经元

    如果图片是2828, 输入层总共有2828 = 784个神经元

    如果输出层只有一个神经元, >0.5说明是9, <0.5说明不是9

    FeedForward Network: 神经网络中没有循环, 信息单项向前传递

    用神经网络识别手写数字:
    首先把数字分开

    对于第一个数字:


    输入层: 28x28 = 784个神经元

    每个神经元代表一个像素的值:0.0全白,1.0全黑

    一个隐藏层: n个神经元, 例子中 n=15

    输出层: 10个神经元,分别代表手写数字识别可能的0~9十个数字,

    例如: 第一个神经元(代表0)的输出值=1, 其他的<1, 数字被识别为0

    隐藏层学习到不同的部分:

    还可能有很多其他方式做出最终分类决定,所以使用10个神经元在输入层

    梯度下降(gradient descent):

    MNIST dataset: http://yann.lecun.com/exdb/mnist/

    得名: Modified National Institute of Standards and Technology

    训练数据集: 60,000 张图片 => 用来训练

    测试数据集: 10, 000 张图片 => 用来测试准确率

    扫描从250个员工的手写字体而来

    x: 训练输入, 28*28 = 784d向量, 每个值代表一个灰度图片中的一个像素值

    y=y(x): 10d向量

    如果输入的某个图片是数字6

    理想输出: y(x)=(0,0,0,0,0,0,1,0,0,0)T

    Cost function (loss function, objective function): 目标函数

    C: cost

    w: weight 权重

    b: bias 偏向

    n: 训练数据集实例个数

    x: 输入值

    a: 输出值 (当x是输入时)

    ||v||: 向量的length function

    C(w,b) 越小越好,输出的预测值和真实值差别越小

    目标: 最小化C(w,b)

    最小化问题可以用梯度下降解决(gradient descent)

    C(v) v有两个变量v1, v2

    通常可以用微积分解决,如果v包含的变量过多,无法用微积分解决.

    假设一个小球在曲面上的某一点,滚动到最低点

    一个变量的情况:

    可能会陷入局部最优
    前提是目标函数要是凸函数convex
    learning rate自动会减小

    相关文章

      网友评论

          本文标题:神经网络基础知识

          本文链接:https://www.haomeiwen.com/subject/zstzcqtx.html