NLP实战高手课学习笔记(9):神经网络基础

168 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情

说明

本系列博客将记录自己学习的课程:NLP实战高手课,链接为:time.geekbang.org/course/intr… 本篇为17-19节的课程笔记,主要介绍深度学习中所使用的神经网络模型的相关基础知识。

神经网络还是复合函数

关于神经网络错误的说法

首先,必须要明确一点:深度学习中的神经网络并不是生物学的神经网络、也不是受其影响所产生的,我们不能因为这个“故事”(即深度学习中的神经网络是受生物学研究启发和推动)讲得好而舍本逐末,我们做的是数学意义上的研究,而非仿生学。

神经网络的数学本质

神经网络在数学上其实就是一个复合函数,由于神经网络复合函数的本质,使得神经网络可以很方便地组合出很多复杂的函数;同时,由于复合函数求导法则,所以大部分神经网络的训练过程可以自动化(反向梯度传递)。

神经网络的训练

优化算法

神经网络的训练需要对损失函数进行优化,而对于优化问题的传统求解方法如拟牛顿法、Proximal Methods等存在如下问题:传统方法需要根据全部样本计算梯度(导数),这导致对于非常复杂的网络, 求解计算上根本不可行。

神经网络中的经典优化算法有:

梯度消失和梯度爆炸

由于求解过程的复杂性,这使得神经网络的求解并不一定会收敛到最优解,对于神经网络训练最大的敌人是梯度消失和梯度爆炸,解决梯度消失和梯度爆炸往往是网络设计和优化算法需要考虑的问题。

实际的应用过程中,我们比较难以发现梯度消失或梯度爆炸,而且在发现后所做的也比较有限。 一般来讲发生梯度爆炸我们可以做的是:把梯度设置一个上限(即Clip操作); 发生梯度消失我们要做的是:尝试更改改网络架构,实验不同的初始值,或改变步长。

神经网络的基础构成

一个典型的神经网络主要有以下几个组件:

  • 损失函数:用于度量预测值和真实值之间的差异,并帮助模型进行优化;
  • 全连接层:用于连接各层神经元;
  • 激活函数:用于引入非线性;
  • Dropout:用于防止过拟合;
  • BatchNormalization:用于保证收敛的稳定性和有效性。

总结

本文介绍了一些神经网络相关的知识,希望对您有所帮助。