温馨提示:本书每章配套专属片尾曲,皆为 IT 行业匠心打造,专属填补行业歌曲空白 ,另外先了解本集内容,再听片尾曲才有更多的感受;

本集专属旁白播放地址
本集播客播客地址

下面是我个定制:
2017:我为AI点亮火种》两个主题曲(大家评选一下):
在这里插入图片描述

昨日未来A版: 歌曲地址

昨日未来B版: 歌曲地址

故事大纲(30集微故事版)

核心设定
主角陈默,2025年顶尖AI科学家,在突破AGI实验时因时序数据溢出,意外穿越回2017年11月——AI爆发前夜,被困在显示着GTX 1070 Ti首发海报的显卡卖场,只剩一部碎屏手机与满脑来自未来的算法记忆。

故事主线
陈默以“时空错位”的技术认知差为火种,从用微型LSTM模型赚取第一笔五百元启动资金开始,在硬件匮乏、生态原始的2017年,逐步搭建起超前时代的轻量化AI技术栈与商业实践,最终在Transformer革命前夕点亮中国AI的独立进化路径。

第2集:首桶金!LSTM短线狙击
情节:在网吧用二手笔记本跑通了优化版LSTM模型,凭借“雄安新区”政策特征,精准狙击三支短线股,赚到穿越后第一笔450元。
看点:特征工程的力量首次展现。小成本撬动大收益的爽感,主角的孤独奋斗与时代信息差形成的独特优势。


在这里插入图片描述

第2集:首桶金!LSTM短线狙击

【开篇:三次心跳】

陈默盯着证券账户的余额:551.8元

在2025年,这是他实验室里一根散热管的价钱;在2017年,这是他向AI时代叩门的全部资本。

“还是太慢。”他站在网吧厕所的镜子前,用冷水抹了把脸。镜子里的年轻人眼中有一种奇异的分裂感——一半是27岁失业程序员的疲惫,一半是35岁顶尖科学家俯瞰时间轴的冷静。

按照这个速度,他要攒够四张GTX 1070 Ti的钱(14796元),需要290次完美预测。

市场不会给他290次机会。任何规律一旦被过度使用,就会在资金的围剿中失效。

他需要放大杠杆——不是金融杠杆,而是认知杠杆

回到机位,陈默打开了一个新的Python脚本。这次不是预测单只股票,而是构建一个多股票协同预测系统


【技术场景一:LSTM的“注意力缺陷”】

“问题出在哪里?”陈默在记事本上写下一行思考:

传统LSTM在处理多股关联时,默认所有输入特征同等重要——这就像让一个人同时听十个人说话,还要求他记住每个人每句话的细微关联。

他需要的,是在2017年还不存在的多头注意力机制。但Transformer的论文才刚发表四个月,连PyTorch官方都还没实现。

“那就先造一个简陋版。”

陈默开始写代码。他的思路很清晰:既然无法让模型自动学习特征重要性,那就手动注入重要性权重

# 特征重要性加权层(2025年简化版移植)
class ManualAttentionLayer(nn.Module):
    def __init__(self, feature_dim=6, stock_count=5):
        super().__init__()
        # 为每只股票每个特征设置可学习权重
        self.importance_weights = nn.Parameter(torch.randn(stock_count, feature_dim))
        
    def forward(self, x):
        # x形状: [batch, stock_count, seq_len, feature_dim]
        # 为每个特征乘上权重,让模型学会“关注重要信号”
        weighted_x = x * self.importance_weights.unsqueeze(1)  # 广播
        return weighted_x

但这还不够。金融时序数据有两个魔鬼:

  1. 非平稳性——股票的波动特性会随时间变化
  2. 异步相关性——A股的上涨可能三天后才传导到B股

陈默调出了五只关联股票的数据:

  1. 冀东水泥(000401) - 他已经验证过的
  2. 金隅股份(601992) - 同一产业链
  3. 华夏幸福(600340) - 雄安地产核心
  4. 中国建筑(601668) - 基建总包
  5. 海螺水泥(600585) - 行业对标

“如果LSTM是短期记忆,我需要给它加上长期记忆抽屉。”

他设计了一个双层架构:

  • 第一层:5个独立的微型LSTM,分别处理单只股票
  • 第二层:一个“协调者LSTM”,接收5个LSTM的隐藏状态,学习股票间的关联模式
class TwoLevelLSTM(nn.Module):
    def __init__(self):
        super().__init__()
        # 五只股票,五个独立专家
        self.stock_experts = nn.ModuleList([TinyLSTM() for _ in range(5)])
        # 协调者:学习专家们如何互相影响
        self.coordinator = nn.LSTM(input_size=5*32, hidden_size=64)
        
    def forward(self, x_list):  # x_list包含5个股票的张量
        expert_outputs = []
        for i, expert in enumerate(self.stock_experts):
            out = expert(x_list[i])  # 每个专家处理自己的股票
            expert_outputs.append(out)
        
        # 协调者看到的是“专家委员会的意见”
        combined = torch.cat(expert_outputs, dim=-1)
        final_out, _ = self.coordinator(combined)
        return final_out

【技术场景二:对抗过拟合的“左右互搏”】

更大的模型意味着更大的过拟合风险——模型可能只是记住了训练数据的噪声,而非真实规律。

陈默只有2015-2017两年的日线数据,约500个交易日。这在深度学习世界里贫瘠得像沙漠。

“我需要数据增强……但时间序列不能随意扭曲。”

他想起了2023年一篇冷门论文《金融时序的因果数据增强》,核心思想是在保持因果顺序的前提下,对数据进行合理变形

他实现了三种增强:

  1. 时间缩放:将股价序列在时间轴上轻微压缩或拉伸(±5%)
  2. 波动率扰动:在波动率低的时期加入适量噪声
  3. 事件偏移:将“政策发布日”在前后三天内随机偏移,模拟市场反应的滞后差异
def augment_time_series(series, policy_dates):
    """因果友好的数据增强"""
    aug_type = random.choice(['scale', 'jitter', 'shift'])
    
    if aug_type == 'scale':
        # 时间轴缩放
        new_length = int(len(series) * random.uniform(0.95, 1.05))
        scaled = F.interpolate(series.unsqueeze(0).unsqueeze(0), 
                              size=new_length, mode='linear')
        return scaled.squeeze()
    
    elif aug_type == 'jitter':
        # 只在低波动期加噪声
        volatility = series.diff().std()
        if volatility < 0.02:  # 低波动期
            noise = torch.randn_like(series) * 0.01
            return series + noise
        return series
    
    else:  # shift
        # 事件日偏移,保持因果顺序
        # 实现细节省略...

增强后,训练数据“膨胀”了五倍。


【技术场景三:用贝叶斯做“风险制动”】

模型可以给出预测,但无法评估预测的可信度。在2025年,陈默会用蒙特卡洛Dropout或深度集成——但这些方法在2017年的小模型上计算代价太高。

他想到了一个古老而强大的工具:贝叶斯神经网络近似

“本质上,我需要知道模型在说‘上涨概率65%’时,这个‘65%’本身有多可靠。”

他在最后一层做了修改:

class BayesianOutputLayer(nn.Module):
    def __init__(self, input_dim, output_dim=1):
        super().__init__()
        # 不直接输出一个值,而是输出分布的参数
        self.fc_mu = nn.Linear(input_dim, output_dim)  # 均值
        self.fc_sigma = nn.Linear(input_dim, output_dim)  # 不确定性
        
    def forward(self, x):
        mu = torch.sigmoid(self.fc_mu(x))  # 预测概率
        sigma = F.softplus(self.fc_sigma(x))  # 不确定性(始终为正)
        # 返回均值和方差,可据此计算置信区间
        return mu, sigma

现在模型每次预测都会附带一个不确定性分数σ。σ值大,说明模型对这个预测没把握;σ值小,说明模型很自信。

陈默设定了一个规则:只交易σ < 0.1的高信心预测


【实战:72小时狙击战】

第1小时:增强后的数据开始训练。网吧的GTX 1050发出轻微嗡鸣。

第12小时:模型第一次收敛。验证集准确率68.3%,比第一版的61.7%显著提升。

第24小时:陈默发现一个问题——模型对“下跌”的预测能力明显弱于“上涨”。这是金融数据的天然不对称:上涨往往有明确催化剂,下跌则可能由无数隐形因素引发。

他引入了不对称损失函数

class AsymmetricLoss(nn.Module):
    def __init__(self, up_weight=1.0, down_weight=1.5):
        super().__init__()
        self.up_weight = up_weight
        self.down_weight = down_weight  # 给下跌预测更高权重
        
    def forward(self, pred, target):
        basic_loss = F.binary_cross_entropy(pred, target, reduction='none')
        # 如果真实标签是下跌(target=0),损失乘上更高权重
        weight_mask = torch.where(target == 0, 
                                 self.down_weight, 
                                 self.up_weight)
        return (basic_loss * weight_mask).mean()

第48小时:模型调整完毕。陈默喝了第六罐红牛,眼睛布满血丝,但眼神明亮。

模型给出了一个高信心预测(σ=0.07):

  • 时间:11月9日(两天后)
  • 标的:京东方A(000725)
  • 逻辑:苹果供应链情绪传导 + 面板行业周期底部反转
  • 预测上涨概率:71.4%
  • 建议持仓时间:3个交易日

第55小时:陈默做出了一个决定。他登录了刚注册的股票论坛账号,发了一个看似“技术分析”的帖子:

《面板行业深度:从周期底部看京东方》
内容充满严谨的数据和产业链分析,只在最后一段“顺便”提到:“技术面显示,本周可能迎来关键转折。”

他需要市场情绪的微弱共振。不是操纵,是催化

第60小时:他将全部资金551.8元,在收盘前以4.12元价格全仓买入京东方A——133股

第72小时:11月9日,周四。

上午9点31分,京东方A平开。
10点15分,苹果供应链分析师发布报告:“iPhone X需求超预期,供应链企业有望受益。”
10点47分,京东方A开始放量上涨:4.15、4.18、4.22……
陈默设定的目标价是4.36元,涨幅5.8%。

下午1点13分,股价触及4.35元。
他没有贪婪。
在4.34元的位置,他清空了所有持仓。

133股 × (4.34 - 4.12) = 29.26元盈利

本金变成581.06元


【意外转折:被看见的“技术宅”】

就在陈默准备关机时,一个身影停在他身后。

“你的模型代码,能让我看看吗?”

陈默猛地回头。是那个三天前在显卡卖场与他争论“8GB显存能否训练AI”的女子——苏晚晴。

她今天穿着简洁的白色衬衫,手里拿着一杯咖啡,眼神里没有质疑,只有敏锐的好奇

“你怎么找到我的?”
“整个网吧,只有你在跑Python而不是玩游戏。”苏晚晴指了指屏幕,“而且你的终端在滚动显示损失曲线——那是在训练什么,对吧?”

陈默迅速最小化窗口:“普通的数据分析。”
“普通数据分析不会用LSTM,更不会用自定义的注意力层。”苏晚晴平静地说出这两个词。

陈默愣住了。2017年,能一眼认出LSTM和注意力机制的人,绝非常人。

“你是谁?”
“一个在找火种的人。”苏晚晴放下咖啡,递过一张名片:
晴空科技 创始人 苏晚晴
下方手写着一行小字:“我相信机器可以做梦,只是还没人教它。”

“我看到你论坛的帖子了。技术分析是幌子,真正的预测来自某个模型,对吗?”她目光如炬,“我出五千元,买你下一周的预测服务。如果准确,我们再谈更大的合作。”

陈默看着名片,又看了看屏幕上刚刚完成的交易记录。

火种需要氧气才能燃烧。
而资本,就是最直接的氧气。


【本集核心知识点总结】

  1. 多时序协同预测

    • 传统LSTM处理多序列的局限性:平等对待所有输入,忽略特征重要性差异
    • 解决方案:手动注意力加权+双层协调架构,模拟“专家委员会”决策过程
  2. 时序数据增强的因果约束

    • 金融数据不能随意增强,必须保持因果顺序
    • 三种因果友好增强:时间缩放、波动率扰动、事件偏移
    • 数据增强本质是让模型学会“规律”而非“记忆噪声”
  3. 预测不确定性量化

    • 贝叶斯神经网络近似:让模型输出预测的均值和方差
    • 不确定性分数σ作为“风险制动器”,只交易高信心预测
    • 这是AI投资中风险控制的核心思想
  4. 金融数据的非对称性处理

    • 上涨和下跌的预测难度不同,需要不对称损失函数
    • 给予下跌预测更高权重,强迫模型学习下跌模式
  5. 2017年深度学习工程现实

    • 没有现成的多头注意力实现,需要手写简化版
    • 计算资源有限,模型必须极端精简
    • 数据稀缺,需要创造性增强

下集预告:苏晚晴的五千元投资到账,但要求陈默现场演示“模型精度如何验证”。在晴空科技的会议室,陈默将用一个简单的脚本揭示AI预测的底层逻辑——而这场演示,将改变两人关系的本质。

本集片尾曲:
七十二小时A版: 音乐地址
七十二小时B版: 音乐地址


版权声明
2017:我为AI点亮火种和主题曲和片尾曲以及相关封面图片等 © [李林] [2025]

本作品采用 知识共享 署名-非商业性使用 4.0 国际许可协议 进行授权。
这意味着您可以:

  • 注明原作者附上原文链接的前提下,免费分享、复制本文档与设计。
  • 个人学习、研究或非营利项目中基于此进行再创作。

这意味着您不可以:

  • 将本作品或衍生作品用于任何商业目的,包括企业培训、商业产品开发、宣传性质等。

如需商业用途或宣传性质授权,请务必事先联系作者。
作者联系方式:[1357759132@qq.com]

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐