本来几年没炒股了,看着大家个个都成了股神,我热血沸腾地跑步进场,结果却成了那个‘天天跑输大盘’的韭菜,尤其是2025年9月9日,我作诗一首,只想好了标题——《韭月韭日移山洞兄弟》,意思就是亏钱亏到租不起房子准备搬到山洞里去了。
复盘之后,我觉得是我的知识储备不够,于是我读了几篇财经杂志。不经意间,看到了查理芒格的这句名言:由于人类长期的进化结果,我们更倾向于用“线性”思维的方式理解世界。然而,世界的本质是非线性的。这个世界之所以有些人能取得巨大成功,而大部分人平平凡凡,关键于他们的思维方式是线性的还是非线性的。
在理解世界本质为何是非线性的时候,我觉得世界这个话题过于宏大和复杂,还是从简单的神经网络说起吧。
一、 线性模型的局限性
线性模型的本质是,它只能通过直线或平面来划分数据。无论特征有多少维,线性模型的决策边界(用于分类)或拟合结果(用于回归)始终是一个超平面(在二维空间中是直线,三维空间中是平面)。
举个例子,网上之前有个很火的段子,全是线性关系:如何区分狼和狗?看神态:怒而咬牙是狼,怒而哈哧是狗;看尾巴:摇太慢是狼,晃太急是狗,弯曲是狼,顺直是狗;看剩饭:糠密是狼,糠稀是狗;看游泳:泳歪是狼,泳正是狗;看额头:后凹是狼,前隆是狗;看食米:稻剩是狼,稻光是狗;看嘴巴:衔土是狼,衔风是狗;看眼神:瞳锐是狼,瞳滞是狗;看排尿:胱尽是狼,胱续是狗;看犬舍:铺草是狼,铺衣是狗;看情感:阴暗是狼,慈喜是狗;看重量:小重是狼,大轻是狗……
狼和狗这么好区分,再说炒股,有没有一个超平面能看出股票是牛是熊呢?我自诩已经博览很多大师、博主甚至群主发表的高见,经常用线性思维去分析:如果MACD金叉,股价就会涨;如果成交量放大,股价就会上涨。但现实是,这些单一的线性规则往往会失效,线性思维在非线性的股票市场中屡屡碰壁。即便是一支不停跌的股票也有大师跟它叫慢牛或者牛回头。
这正说明,**在股票市场这个复杂的非线性世界里,我们企图用一条直线(或一个超平面)来划分牛熊,本身就是个巨大的误解。**那么,我们该如何从线性的困境中突围,走向非线性呢?MLP,正是神经网络给出的答案。”
二、 MLP的核心定义
MLP通过引入(一个或多个)隐藏层,结合激活函数,克服了线性模型的局限。
其核心结构由输入层、至少一个隐藏层和输出层组成。各层之间采用全连接方式,即前一层的每一个神经元均与后一层的每一个神经元相连接,从而实现信息的全面传递。
图表达
其中:
- 是输入特征,n维。
- 是隐藏层的输出,h维。
- 来表示激活函数。
- 是输出层的输出,m维。
- 和 分别是隐藏层的权重和偏置。
- 和 分别是输出层的权重和偏置。
那么问题来了,为啥有了激活函数的加持,就能克服线性模型的局限?
代码表达
三、激活函数的奥秘
1. 假如没有激活函数
如果我们没有引入激活函数,直接将第一层的输出 H 作为第二层的输入,那么最终的输出 O 将表达为:
展开这个公式,可以得到:
这个最终结果仍然可以被简化为一个单层的线性模型,表示为:
其中, ,。
这种情况下,无论我们堆叠多少层,整个网络最终都只能表示一个线性的仿射变换。它的表达能力等同于一个单层网络,无法学习和处理复杂的非线性关系。因此,为了发挥多层网络的潜力,我们必须引入激活函数来提供非线性能力。
2. 激活函数对比
以下是几种常用的激活函数及其核心特性:
ReLU (Rectified Linear Unit)
公式:
特性: 计算高效,只需要简单的阈值判断即可。当输入为正时,导数恒为1,这能有效缓解梯度消失问题,从而加速收敛并使得深度网络训练成为可能。
适用场景: 由于其出色的性能,ReLU 函数是目前深度神经网络隐藏层的首选激活函数。
Sigmoid (S型函数)
公式:
特性: 将输入值压缩到 (0, 1) 的范围内,这使其非常适合表示概率。然而,当输入值过大或过小时,函数梯度会趋近于0,导致梯度消失问题,使得网络参数难以更新。
适用场景: 由于其输出范围的特性,Sigmoid 函数常被用作二分类任务的输出层。
Tanh (双曲正切函数)
公式:
特性: Tanh 函数的输出范围是 (-1, 1),其均值为0且零点居中,这有助于数据的零均值化,从而加速梯度下降。不过,和 Sigmoid 类似,它同样面临梯度饱和的问题。
适用场景: Tanh 函数常被用于循环神经网络(RNN)的隐藏层。