神经网络与自编码器:原理、工具与实战
1. 神经网络基础
神经网络试图学习合适的函数近似,以将输入层映射到输出层。在监督学习问题中,输入层代表输入到神经网络的特征,输出层代表每个观测的标签。训练过程中,神经网络确定网络中的哪些权重有助于最小化预测标签和真实标签之间的误差。而在无监督学习问题中,神经网络通过各种隐藏层学习输入层的表示,但没有标签的引导。
神经网络非常强大,能够对复杂的非线性关系进行建模,这是传统机器学习算法难以企及的。然而,神经网络也更容易出现过拟合问题,在设计机器学习应用时需要注意并解决这个问题。
常见的神经网络类型包括循环神经网络(用于语音识别和机器翻译)和卷积神经网络(用于计算机视觉),这里主要关注前馈神经网络,其数据仅沿一个方向流动:向前。
要使神经网络表现良好,还需要进行大量的超参数优化,包括:
- 选择成本函数
- 选择最小化损失的算法
- 起始权重的初始化类型
- 训练神经网络的迭代次数(即轮数)
- 每次权重更新前输入的观测数量(即批量大小)
- 训练过程中权重移动的步长(即学习率)
2. TensorFlow 与 Keras
2.1 TensorFlow
TensorFlow 是一个用于高性能数值计算的开源软件库,最初由 Google Brain 团队为 Google 内部使用而开发,于 2015 年 11 月作为开源软件发布。它支持多种操作系统,可在多个 CPU 和 GPU 上运行,具有很高的可扩展性,能快速部署到桌面、移动、Web 和云等多种环境。
TensorFlow 的优势在