神经网络手写生成实验与技术探索
模型输出观察
第一个实验是最直观的:当需要评估模型学习效果时,通常要求其进行任务演示。因此,让手写生成模型进行书写并观察其表现。
虽然大部分输出为无意义字符,但许多结果令人信服,甚至出现类似真实单词的序列。值得注意的是,单个样本中的书写风格保持相对一致,这是因为采用的LSTM架构具有记忆先前笔画的机制,能够记住书写特征(如弧度或急转)以及前序字母信息。
由于神经网络生成技术基于概率原理,每个样本都是巨大可能性空间中的一种实现。仅观察个别样本难以全面评估模型性能——当存在近乎无限的可能性时,如何从一两个样本推断整体表现?如果出现异常,如何区分是模型本质缺陷还是随机因素?
扩展可能性空间可视化
通过在每次迭代中绘制多条路径(如50条),而非仅选择单一路径,可以展现更丰富的可能性空间。绿色笔画表示模型可能向右偏离当前选择路径的位置,橙色则表示向左偏离。
这种技术能够照亮更广阔的可能性空间,可见某些区域存在明显的行为共识,而其他区域则呈现"任何情况都可能发生"的特征,还有些区域显示潜在的分歧点(如同时存在书写"a"或"g"的可能性)。
该技术不仅适用于模型生成样本,也可应用于人工书写样本,展示模型在每个决策点可能采取的不同路径。
模型内部机制分析
模型包含500个作为记忆单元的细胞,在生成决策时作为输入组成部分。通过观察这些细胞在模型运行过程中的激活状态,可以直观理解模型内部工作机制。
首先展示细胞随时间变化的激活热图:每列代表手写笔画的一个线段,每行对应一个模型细胞,颜色表示在该笔画段的激活强度。通过检测图表,可以发现特定细胞对特定笔画类型的激活模式。
研究发现细胞通常协同工作,单个细胞的活动可能不如细胞群体有意义。应用一维t-SNE技术对细胞激活进行排序,能够将行为相似的细胞聚集,使图表更易解读。采用两个技巧优化效果:对主要负值的细胞状态进行符号翻转;使用基于邻域细胞激活百分位数的度量方法。
在优化后的可视化中,可以识别出清晰的细胞行为模式:顶部细胞11-70对笔触方向和曲率敏感;底部细胞427以下专注于笔尖抬起预测;中部细胞跟踪绝对位置,如细胞136关注水平位置,细胞236关注垂直位置,细胞242追踪单词内位置。
交互式激活探索
另一种探索方式是提供样本并实时交互观察所有细胞的激活状态。用户可以书写并实时查看所有细胞的激活情况。
技术实现细节
采用的模型基于Alex Graves论文中描述的序列生成模型,是一个具有500个隐藏单元的小型LSTM,专门训练用于无条件手写生成任务。训练后使用8位整数量化权重,并导出为JSON-Base64格式文件。
模型包含一个控制采样范围的参数(标记为"variation",通常称为温度参数)。温度变化因子T对应于将所有概率提高到1/T次幂并进行归一化。
结论
机器学习模型的"黑盒"特性确实存在,但部分原因源于其被限制在特定的编程环境中。将可检查模型与交互式可视化环境(本文使用JavaScript)置于同一编程语境,被证明对原型设计和新思路探索极具成效。
随着模型越来越多地融入用户界面开发的编程环境,预计将出现更丰富的人机交互模式。这不仅对模型调试和构建产生显著影响,也将改变模型的使用方式。当前机器学习研究主要聚焦于模仿和替代人类,而使用机器学习增强人类能力的研究相对较少。当模型的全部能力在用户界面环境中可用时,这种复杂的人机交互探索才能达到最佳效果。
技术说明
模型详细描述和训练流程可参考相关论文和博客文章。t-SNE神经元组织优化的具体实现方法可在代码库的bin/sort文件中查看。