图神经网络基础:从传统神经网络到GNN
2025年05月26日
神经网络基础
神经网络核心思想
在深入了解图神经网络之前,掌握基础神经网络 神经网络如同人脑通过感官接收信息,并结合过去的学习经验做出决策。
神经网络类似一个函数 f(x),比如 f(x) = x²。
- 输入层:你给它一个数 x=2。
- 隐藏层:里面有一堆神经元,每个都会算 w·x + b(w 和 b 是它自己调整的参数),然后加工一下(反正就当他一堆参数)。
- 输出层:把隐藏层的结果汇总,输出一个值(假设这里答案是 4,但是他就会输出一个接近 x²=4)。
训练时,神经网络会不断调整那些 w 和 b,让输出越来越接近 x²。最终,它就能自己学会 f(x) ≈ x²
激活函数
说到激活函数,我觉得这是神经网络里一个特别巧妙的设计。刚开始学的时候,我也不太理解为什么要搞这么个东西,后来才明白它的重要性。 最核心的原因就是:没有激活函数的话,再多层的神经网络也只是个超级复杂的线性函数。 想象一下,如果每个神经元都只是做简单的加权求和:
第一层:y₁ = w₁x + b₁
第二层:y₂ = w₂y₁ + b₂ = w₂(w₁x + b₁) + b₂ = w₂w₁x + w₂b₁ + b₂
你会发现,不管搞多少层,最终都能化简成一个 y = ax + b 的线性函数。这样的网络只能学习线性关系,遇到复杂的非线性问题就傻眼了。 但现实世界的问题大多数都是非线性的——比如图像识别、语音识别、自然语言处理,这些都不是简单的线性关系能搞定的。
一般就用ReLU。因为,计算简单,就是个 max(0,x),比 Sigmoid 那种指数运算快多了。梯度稳定,在正数区域梯度恒为 1,不会越来越小。稀疏激活:负数直接变 0,这种稀疏性对模型效果有好处 不过也不是万能的,有时候网络训练着训练着,一些神经元就报错了(输出永远是 0),这时候可能需要考虑其他变种,比如 Leaky ReLU之类的 这里有个特别重要的点:激活函数必须是可微的。因为神经网络的训练依赖于反向传播算法,需要计算梯度来更新参数。如果激活函数不可微(比如阶跃函数),就没法计算梯度,网络就训练不了。就像开车需要方向盘一样,梯度就是神经网络训练的"方向盘"。没有梯度,网络就不知道往哪个方向调整参数。
** 下一篇文章 ** 神经网络如何学习:从前向传播到反向传播的完整过程