作者:禅与计算机程序设计艺术
1.简介
近几年随着数据量的增长以及硬件性能的提升,神经网络(Neural Network)已经逐渐成为机器学习领域最热门的技术之一,在自然语言处理、计算机视觉等方面都取得了突破性的成果。但是,传统的神经网络模型设计方法需要大量的人工设计和调参,这给训练过程造成了较大的麻烦。因此,为了能够更有效地解决深度学习问题,人们开发出了一些自动化训练的方法,如自动微分求解器(Autograd),基于梯度下降的优化算法(SGD/Adam),Dropout层等。这些方法虽然可以大大减少时间消耗并提高模型效果,但同时也带来了新的复杂度。由于篇幅限制,本文不涉及这些方法的细节,只介绍其基本原理和应用。
2.基本概念和术语说明
首先,我们先介绍一些基本概念和术语,方便读者理解。
模型结构
一个神经网络由多个层次构成,包括输入层、隐藏层和输出层。每一层之间通过加权的连接相连,从而实现对输入数据的非线性转换。其中,输入层接收外部输入的数据,输出层输出模型预测结果;中间层则由多种不同类型的神经元组成,起到网络的非线性映射作用。如下图所示,左边是一个典型的神经网络结构。
激活函数
激活函数是指用于对神经网络的输出进行非线性变换的函数。常用的激活函数有Sigmoid函数、tanh函数、ReLU函数、Leaky ReLU函数等。其中,Sigmoid函数将神经网络的输出压缩到(0,1),并提供一种概率化的结果;tanh函数将神经网络的输出压缩到(-1,+1)