本文共 1055 字,大约阅读时间需要 3 分钟。
傍晚,忙了一天的 Ray 终于下班,摘下眼镜休息双眼。他走到公交车站等23路公交车回家。在这里,作为一个高度近视眼的人,Ray 每天都面临着不小的困扰。每次公交车驶来,他都看不清车身上的号码,这严重影响了他的挤车效率。
这让他不禁思索,为什么别人都能轻松看清,而自己却要戴着眼镜?想起在国外出差时,公交车上的号码总是印在车身上,字号很大,即使视力不好也能看得很清楚。"如果能做一个手机App,拍摄车身照片并自动识别号码,那就太方便了!"这念头突然在他脑海中闪现。
他立刻想到了朋友 Cavy,决定与他共谋此事。Cavy对深度学习算法赞不绝口,甚至提到过曾打败人类顶尖围棋高手的深度学习。Ray虽然对深度学习的原理感到好奇,但还是决定先从基础开始学习。
深度学习的核心在于神经网络,而神经网络又建立在人脑的神经元网络之上。Cavy简单解释道:"神经元通过细胞体接收信息,树突传递信号,轴突输出结果。点火过程可以用数学式子表示:"
z = w1x1 + w2x2 + ... + wn xn
y = u(z)为了避免单位阶跃函数的间断点,神经网络通常使用 Sigmoid 函数作为激活函数,将输出光滑化。Cavy还提到,神经网络的结构通常包括输入层、隐藏层和输出层。以公交车号码识别为例,我们可以设计一个包含4x3像素的二值图像识别网络,分3层组织:
通过数学推导,我们可以得到神经网络的关系式:
输入层:a = z
隐藏层:b = a(z) 输出层:c = b(z)为了实现这一目标,我们需要预先准备64张图像作为训练数据,并标记好答案。目标函数是最小化平方误差:
C = Σ( t1 - c1 )² + Σ( t2 - c2 )²
为了避免繁琐的偏导数计算,误差反向传播法可以用神经单元误差递推关系来简化梯度计算:
δl = m_{l+1} * f'(z_{l+1}) * δ_{l+1}
这样,我们就可以一步步计算出各层的误差,从而调整权重和偏置参数,最终达到最小化代价函数的目的。
Ray对这个方法赞不绝口,但也提出了自己的疑问:"公交车号码由0-9组成,需要更大的网络结构。"Cavy建议使用卷积神经网络(CNN),通过局部感受野和池化层显著减少神经元数量,提高识别效率。
Ray随后表示需要进一步深入学习,Cavy送给他一本《深度学习的数学》,以帮助他更好地掌握相关知识。
转载地址:http://mxol.baihongyu.com/