zoukankan      html  css  js  c++  java
  • 什么叫做神经网络(科普向)

    什么叫做神经网络(科普向)

    本文写于 2020 年 12 月 11 日

    之前讲了什么叫做机器学习,不理解的可以移步《什么叫做机器学习》

    神经网络的最重要用途就是 classification。

    对于我们人来说,前面跑过的四脚兽是猫还是狗、是狼还是虎,我们都可以判断出来(一般)。我们虽然没有探究清楚人脑究竟是怎么思考的,可是简化出了「神经网络」,通过机器学习实现人工神经网络。

    关于 classification 有几个典型的例子:

    1. 邮箱判断邮件是否是垃圾邮件;
    2. 判断四脚兽的照片到底是猫还是狗、狼还是虎;
    3. 根据病症判断疾病类型
    4. ……

    这都是 classification。我们写一个程序能够进行分类,那他就是「分类器」。在神经网络里,一个神经元就是一个「分类器」。

    我们会将事物的 「特征」 作为输入,经由「分类器」得到输出。比如 0 表示是猫、1 表示是狗;0 表示是垃圾邮件、1 表示不是。

    我们高中都学过线性回归,线性回归是对数据进行拟合,然后画出一条直线。

    如果我们利用线性回归进行分类,可以说:在直线一边的是 A,在直线的另一边的是 B。

    平面上直线的方程是 ax + by + c=0,所以根据 ax1 + by1 + c > 0 还是 ax1 + by1 + c < 0 就可以判断 (x1, y1) 在直线的哪一边。

    神经元的实质就是把特征空间一切两半,一边是一个类型。

    实际工作中我们并不知道怎么画这一条直线,我们可以利用 Hebb 算法:

    我们把直线放上去,然后把样本拿过来,如果说分错了,就把直线移动一点,让他更靠近样本……最终让他跑到直线正确的一侧。

    因此训练神经元的过程就是不断的在移动直线,最终到一个恰当的位置。

    但有一个问题——如果我的范围是一个圆怎么办?或者说,我需要砍两刀怎么办?

    神经元只能切一刀呀

    一刀是非常有局限性的,所以人们发明了 「多层神经网络」,底层神经元的输出是高层神经元的输入,这样我们就可以砍很多很多刀了!

    • 我们每砍一刀,就是使用了一个神经元;
    • 把砍下的不同的块做交、并运算就是把这些神经元的输出当作输入;
    • 再连接后面的神经元。

    根据极限的思想,只要我们砍的刀数足够多,那么什么样的边界神经网络都能砍出来。

    神经网络的训练依靠的是 「反向传播算法」

    • 输出层发现输出的结果和训练数据不符合;
    • 调整自己的参数(即移动直线);
    • 调整上一层的参数;
    • 层层向上;
    • 如果还是不对,就会重新从最后一层开始。

    (完)

  • 相关阅读:
    用js实现双色球
    nodejs_理解Buffer
    nodejs_buffer.copy
    nodejs_buffer.concat
    nodejs_buffer.alloc
    Ant Design Pro v4 最新版安装(跳过所有坑)
    python eventlet详解
    python 超时重试方法
    pycharm配置react
    Python性能优化的20条建议
  • 原文地址:https://www.cnblogs.com/xhyccc/p/14120191.html
Copyright © 2011-2022 走看看