第 42 篇
神经网络入门
量化课堂第 42 篇(postId=1738,作者 yongpeng.r,编辑宏观经济算命师,难度进阶上、理解深度 level-0,2016-07 上线)。机器学习组第 7 篇,机器学习八篇里唯一讲神经网络的。它从生物神经元讲到人工神经元(加权求和 + sigmoid),用手算异或 XOR 展示「三层网络能算线性模型做不到的非线性逻辑」,最后给 pybrain 包的涨跌预测演示。全文止步于「直观认知」:网络怎么训练、非线性分类能力分析,原文预告「将来推出」,本库只收入门这半。素材见 raw/collections/jq-quant-classroom/42-42-神经网络入门md.md。
这是什么
一篇 level-0 的概念入门,无完整代码。它回答「神经网络是什么、为什么能干活」:大脑本质是巨量神经元组成的高效处理器,看猫图瞬间就知道是猫;于是有人(20 世纪 40 年代)想「模拟神经元网络行为」解决问题,20 世纪 80 年代后算力提升,神经网络成为热点。可识别手写字符、用历史交易日信息判断股票明天涨跌、甚至给「最可能收盘价」(准不准另说,人脑也未必准——原文诚实)。
核心要点
生物神经元 → 人工神经元
- 生物神经元:树突接收信息(别的神经元或物理刺激)→ 细胞体综合 → 总和超过阈值就兴奋(fire)、经轴突发信号传出;不够阈值就抑制。大脑神经细胞只有兴奋/抑制两态。
- 人工神经元两部分工作:① 对输入加权求和(综合信号);② 用 sigmoid 处理:g(z)=1/(1+e^(−z))。
- 为什么用 sigmoid:输出值集中于 1 和 0,对应神经元的兴奋/抑制两态;而且能很容易由函数值得到导数值(为将来训练做准备)。
三层网络 + 手算 XOR
- 结构:输入层 / 隐含层(可一层也可多层)/ 输出层。输入层、输出层各只有一层。
- XOR(异或):a、b 不同 → 1;相同 → 0。用给定权重手算(输入 x₁、x₂,常值项 +1):
- a1 = 1·(−30) + x₁·20 + x₂·20;z1 = sigmoid(a1)。
- a2 = 1·10 + x₁·(−20) + x₂·(−20);z2 = sigmoid(a2)。
- s1 = 1·10 + z1·(−20) + z2·(−20);y1 = sigmoid(s1)。
- x=(1,1):a1=10→z1≈1;a2=−30→z2≈0;s1=−10→y1≈0。
- x=(1,0) 与 (0,1)→y1=1;x=(0,0)→y1=0。与 XOR 完全一致。
- 要点:隐含层 + 非线性激活让网络能表达 XOR 这种线性分类器做不到的决策。作者目的只是给直观认知;训练与非线性分类能力「比较复杂」,预告后续文章。
pybrain 包的使用
- Python 环境可用 pybrain 构建/训练/分类神经网络(小提示:python2 环境下用 pybrain 比较好)。
- 特征:收盘价算的 SMA、WMA、MOM;训练:2007-1-4 至 2016-6-2 截止前一天的指标,标签 = 每天涨跌(涨 True、跌 False);测试:2016-6-3 的三指标与真实涨跌。
- 输出:测试样本判断误差——只有一个测试样本,判对输出 0%、判错输出 100%。
机制 / 论证
- 为什么加权求和 + 非线性激活:加权求和 = 对输入的「综合」;sigmoid 把综合结果压成 (0,1) 的软开关,接近兴奋/抑制。多个这样的单元串成层,网络就能表达复杂(非线性)函数。
- XOR 手算在证明什么:单个线性阈值单元只能画一条直线分两类,分不开 XOR 的四个角;加一层隐含层后,网络可以用「组合出中间概念」的方式完成 XOR。隐含层是神经网络表达力的来源——这是本文最重要的一个论证。
- 为什么本文没有「学习」:XOR 例子的权重(−30/20/−10/10)是人工凑出来能干活的值,不是训练出来的。真正的训练(怎么自动调权重)是原文预告的后续内容,未收录。
- 为什么说是简化:人工神经网络是真实神经网络的简化模型;生物机制人类还没研究透(原文自承),并不精确模拟大脑。
可操作
- 手算验证 XOR:把 (1,1)、(1,0)、(0,1)、(0,0) 依次代入上面三层公式,确认输出 0/1/1/0——可用于理解前向计算。
- pybrain 涨跌预测流程(代码在 notebook,raw 只给文字步骤):
- 收盘价算 SMA/WMA/MOM 特征。
- 2007-1-4~2016-6-2 数据训练(标签 = 每日涨跌 True/False)。
- pybrain 搭网络、训练。
- 预测 2016-6-3,与真实涨跌比对输出误差(0% 或 100%)。
- python2 + pybrain 是 2016 语境,如今生态已变 [需要验证],别照搬环境。
- 股票预测可行性:原文只说「准不准另说,人脑也未必准」,无任何回测/胜率证据。
术语
- 神经元:树突收信号、胞体求和、超阈值兴奋(fire)、轴突传出。
- sigmoid:g(z)=1/(1+e^(−z)),输出压到 (0,1) 且易求导的激活函数。
- 输入层 / 隐含层 / 输出层:神经网络的三类层,隐含层可多层。
- XOR(异或):两输入不同则输出 1 的逻辑运算。
- pybrain:Python 神经网络/机器学习库(2016 语境)。
不确定 / 待验证
- 只到「直观认知」:网络的训练算法(反向传播等)、非线性分类能力分析,原文预告「将来文章」,未收录本库。
- pybrain 具体代码(网络搭建、训练函数)在 notebook(notebookCloneCount=655),raw 只给文字说明 [需要验证]。
- 「python2 环境下使用 pybrain 比较好」照录原文,2016 语境,已过时。
- 单测试样本(2016-6-3)输出 0%/100%,纯演示,不是有效性检验。
- 网络层数/每层节点数、学习率等实现细节原文没给。
- 神经网络用「股票历史交易日信息判断涨跌/收盘价」只是导语举例,本文没有相关策略或结果。
相关
- 神经网络(人工神经元、sigmoid 与隐含层) — 神经网络共享概念页(本篇入门提炼)
- 朴素贝叶斯入门 — 同款 SMA/WMA/MOM 特征 + 涨跌标签的另一算法演示(第 37 篇)
- 手把手教你如何应用机器学习 — 机器学习应用篇(特征离散化 + 多算法滚动重训,第 43 篇)
- 聚宽量化课堂(低频量化策略 43 篇) — 量化课堂 43 篇总览
更新 2026-09-06