上篇笔记里(基于硅光芯片的深度学习)提到:深度学习中涉及到大量的矩阵乘法。今天主要对此展开介绍。
我们先看一下简单的神经元模型,如下图所示,
神经元接收到n个其他神经元(x1-xn)传递过来的信号,每个神经元的连接权重(connection weight)不一样,分别为w_1j...w_nj。神经元j(上图中的圆)接收到这些信号,并与阈值theta进行比较,通过激活函数f(activation function)处理并产生神经元的输出,整个过程的数学表示为,
进一步,我们可以把theta看成是w_0,x0=-1, 上式可以改写为,
可以看出函数f的变量可以写成矩阵乘法W*X的形式。对于含有多个隐藏层的人工神经网络,每个节点都会涉及矩阵乘法,因此深度学习中会涉及到大量的矩阵乘法。
接下来我们来看一看矩阵乘法如何在光芯片上实现。线性代数中,可以通过奇异值分解(singular value decomposition),将一个复杂的矩阵化简成对角矩阵与幺正矩阵相乘。具体来说,m*n阶矩阵M可以写成下式,
其中U是m*m阶幺正矩阵,Sigma是m*n阶对角矩阵,V是n*n阶幺正矩阵。
已经有文献证明,光学方法可以实现任意阶的幺正矩阵,具体可参看文献[1,2],公众号后续会对此做介绍。而对角矩阵Sigma也可以通过衰减器等方法实现。因此,矩阵M就可以通过光学方法实现。MIT研究组的深度学习光芯片如下图所示,其中红色对应幺正矩阵,蓝色对应对角矩阵。
通过多个MZ干涉器级联的方法,可以实现矩阵M,矩阵元对应深度学习中的连接权与阈值。 需要注意的是,激活函数f并没有在光芯片上实现,而是将信号输入进PC, 由PC实现激活函数,产生输出结果,进而调整矩阵M, 最终得到满足要求的学习模型。MIT研究组实现的是,两层伸进网络,示意图如下,
我的看法:
1) 是否可以把激活函数f也在光芯片上实现?目前看来还比较苦难,涉及到光计算。还是需要将光信号变换到电信号,然后在PC上进行信号处理。是否有变通的方法呢?
2) 目前实现的神经网络还过于简单,没有隐藏层,只有输入输出层,能做的学习任务还比较简单。后续可以尝试模型更为复杂的机器学习任务。
3) 光芯片可以实现深度学习,但是光芯片的优势是什么?功耗低?
公众号中编写公式不太方便,目前都是通过截图的方法实现,不太美观,大家见谅。
时间仓促,文章中如果有任何错误或不准确的地方,烦请大家指出!
参考文献:
1. 周志华 《机器学习》
2. Y. Shen, et.al. , Deep learning with coherent nanophotonic circuits
3. Miller, D. A. B. Perfect optics with imperfect components. Optica 2,
747–750 (2015).
4. Reck, M., Zeilinger, A., Bernstein, H. J. & Bertani, P. Experimental realization of any discrete unitary operator. Phys. Rev. Lett. 73, 58–61 (1994).