1. 问题描述
很多算法描述中,喜欢用各种矩阵表达的形式,比如 al=σ(wlal−1+bl) ,对于内存不够、cpu又慢的人来说,解析这样的表达式,往往会造成系统卡顿,死机。
2. 问题分析
对于一个大家都使用的习惯,其中一定存在自己不理解的地方。而且数学表达式一定是追求简洁+精确。要解决这样的问题,最直接的办法是,理解每一个字母的含义,体会这种表达式的优越之处,尝试让自己习惯并主动使用这种表达式。
3. 问题解决
3.1 理解含义
这个式子出现在Neural Networks and Deep Learning1 第二章中,在描述神经网络的时候。
要描述这个神经网络,如果不用矩阵的形式,就必须使用下标,像这样:
alj=σ(∑kwljkal−1k+blj)
每一个字母可以明确表示哪层、哪个节点、谁和谁的连接,而且可以读懂。但是,不简洁,看多了这样的式子,会心累的。按Michael Nielsen的话说,叫index hell。
3.2 matrix-based expression 优越之处
基于矩阵的表达,可以轻松地避免上面这个问题,像下面这个:
al=σ(wlal−1+bl)
index-based expression 暴露了太多内部信息,而这些信息,对于处理步骤是冗余的。matrix-based expression可以很好地把和处理步骤无关的信息,封装起来。能够封装的原因是,each element in a matrix behaves totally the same.
3.3 尝试习惯并主动使用
想要解决内存不足cpu速率不够的问题,根本办法是,扩大内存,提高cpu速度。