如何构建神经网络中的神经元(pytorch 前置知识)
构建最简单的perceptrons
- 首先需要对生物学里的神经元有一个基本理解
对于深度学习, 只需知道神经细胞的两大部分, 轴突和树突, 了解它们之间是如何传递信息的, 因为感知器是完全按照这一逻辑构建, 虽然无法达到人类的神经细胞全部功能, 但是目前最好的, 最简单的数学模型。
轴突和树突之间要进行信号的传递, 即为输入和输出,传递的结果可能被**也可能没有。 - 单一神经元模型
输入为x1, x2, 1, 当然也可以有几百几千个输入, 输入的每一个值需要乘以相应的权重, w1, w2, w0, 其中w0 = -th, th为threshold。w0 为偏移量, g 为转移方程。输入信号x1, x2 乘以权重w1, w2与w0 相加得到s, 然后s的结果传递给g, g(s)的结果即为输出。
该模型解决的问题是线性不可分的, 也就是解决下图所示的问题, 如果给出二维或多维中的若干的, 满足线性不可分, 如下图, 总能找到一条最优的直线, 直线上边为白点, 代表0, 直线下方为黑点, 代表1. - 什么是线性不可分:
下图为最基本的逻辑and, 在二维平面中, 点(0,0),(1,0),(0,1)代表逻辑and后结果为0, (1,1)代表and后结果为1,如何找出一条直线?区分1 和 0.
很容易想到,直线g = x1 + x2 - 1.5为0 和 1 的分割线。这种情况即为线性不可分。
同理, 可以构建一个or 神经元:
点(1,1),(1,0),(0,1)代表逻辑or后结果为1, (0,0)代表or后结果为0,
很容易想到,直线g = x1 + x2 - 0.5为0 和 1 的分割线。这种情况即为线性不可分。线性不可分即为能够找到这样的直线区分0 和 1.
那么如何构建NOR, not or
以上分析, 对g(x) 的结果作简化转移函数处理:
同样的可以得到nor:
- 神经元如何学习
计算机科学家通过计算机计视觉识别26个字母的学习情况, 研究出了感知器模型, 引入了learning rate 这一概念, 如果可以通过调整学习率这一参数控制模型学习的快慢,好坏。
通过学习率, 可以达到预期的结果:
如果结果为0, 正确的值为1, 那么, 加上学习率, 否则减去学习率。通过不断学习, 最终达到理想的线性不可分直线。 - 下篇为具体学习实例。