最近学习吴恩达《Machine Learning》课程以及《深度学习入门:基于Python的理论与实现》书,一些东西总结了下。现就后者学习进行笔记总结。本文是本书的学习笔记(四)神经网络的学习。
本章标题所说的“学习”是指从训练数据中自动获取最优权重参数的过程。学习的目的就是以损失函数为基准,找出能使它的值达到最小的权重参数。
从数据中学习
神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。
数据是机器学习的命根子。数据是机器学习的核心。这种数据驱动的方法,也可以说脱离了过往以人为中心的方法。
而机器学习的方法是极力避免人为介入的,尝试从收集到的数据中发现答案(模式)。神经网络或深度学习则比以往的机器学习方法更能避免人为介入。
例如手写数字识别,考虑通过有效利用数据来解决这个问题:先从图像中提取特征量,再用机器学习技术学习这些特征量的模式。“特征量”是指可以从输入数据(输入图像)中准确地提取本质数据(重要的数据)的转换器。图像的特征量通常表示为向量的形式。在计算机视觉领域,常用的特征量包括SIFT、SURF和HOG等。使用这些特征量将图像数据转换为向量,然后对转换后的向量使用机器学习中的SVM、KNN等分类器进行学习。
机器学习的方法中,由机器从收集到的数据中找出规律性。但是,将图像转换为向量时使用的特征量仍是由人来设计的。即使使用特征量和机器学习的方法,也需要针对不同的问题人工考虑合适的特征量。
深度学习有时也称为端到端机器学习。
神经网络的优点是对所有的问题都可以用同意的流程来解决。神经网络都是通过不断地学习所提供的数据,尝试发现带求解问题的模式。也就是说,与待处理的问题无关,神经网络可以 将数据直接作为原始数据,进行“端对端”的学习。
机器学习中,一般将数据分为训练数据和测试数据两部分来进行学习和实验等。未来正确评价模型的泛化能力,就必须划分训练数据和测试数据,训练数据也可以成为监督数据。
泛化能力是指处理未被观察过的数据(不包含在训练数据中的数据)的能力。获得泛化能力是机器学习的最终目标。
只对某个数据集过度拟合的状态称为过拟合(over fitting)。避免过拟合也是机器学习的一个重要课题。
损失函数
神经网络以某个指标为线索寻找最优权重参数。神经网络的学习中所用的指标称为损失函数。这个损失函数可以使用任意函数,但一般用均方误差和交叉熵误差等。损失函数是表示神经网络性能的“恶劣程度”或者“性能有多好”的指标,即当前的神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。
均方误差
均方误差(mean squared error)由下式表示: