深度学习系列(9):Batch Normalization
batch normalization(Ioffe and Szegedy, 2015) 是优化深度神经网络中最激动人心的创新之一。实际上它并不是一个优化算法,而是一个自适应的重新参数化 的方法,试图解决训练非常深层模型的困难。
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
机器学习领域有一个很重要的假设:iid独立同分布假设,就是假设训练数据和测试数据满足相同分布,这是通过训练数据训练出来的模型能够在测试集上获得好的效果的一个基本保证。Batch Normalization就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布。
深度学习系列(8):激活函数
深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的activation function,传入到下一层神经元;再经过该层神经元的activate function,继续往下传递,如此循环往复,直到输出层。其中的激活函数的主要作用是提供网络的非线性建模能力,使得神经网络有足够的capacity来抓取复杂的pattern,在各个领域取得state-of-the-art的结果。
深度学习系列(7):优化算法
一、Gradient Descent [Robbins and Monro, 1951, Kiefer et al., 1952]
机器学习中,梯度下降法常用来对相应的算法进行训练。常用的梯度下降法包含三种不同的形式,分别是BGD、SGD和MBGD,它们的不同之处在于我们在对目标函数进行梯度更新时所使用的样本量的多少。
深度学习系列(6):递归神经网络
上一篇我们学习了循环神经网络,它可以用来处理包含序列的信息。然而,除此之外,信息往往还存在着诸如树结构、图结构等更复杂的结构。对于这种复杂的结构。循环神经网络就无能为力了。本文学习一种更为强大、复杂的神经网络:递归神经网络(Recursive Neural NetWork,RNN),以及它的训练算法BPTS(Back Propagation Through Structure)。顾名思义,递归神经网络可以处理诸如树、图这样的递归网络。
深度学习系列(5):长短时记忆网络(LSTM)
一、长期依赖问题(Long-Term Dependencies)
循环神经网络(RNN)在实际应用中很难处理长距离依赖的问题。
有的时候,我们仅仅需要知道先前的信息来完成预测任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词,比如我们预测“the clouds are in the sky”最后的词的时候,我们不需要任何其他的上下文,很显然下一个词就是sky。在这种情况下,相关的信息与需要预测的词位置之间的间隔很小,而RNN可以学会使用较近距离的信息。
深度学习系列(4):循环神经网络(RNN)
之前学习了全连接神经网络和卷积神经网络,以及它们的训练与应用。它们都只能单独的去处理单个的输入,且前后的输入之间毫无关系。但是,在一些任务中,我们需要更好的去处理序列的信息,即前后的输入之间存在关系。比如,在理解一整句话的过程中,孤立理解组成这句话的词是不够的,我们需要整体的处理由这些词连接起来的整个序列;当我们处理视频时,我们也不能单独地仅仅分析每一帧,而要分析这些帧连接起来的整个序列。这就引出了深度学习领域中另一类非常重要的神经网络:循环神经网络(Recurrent Neural Network)。
深度学习系列(3):卷积神经网络(CNN)
本文将要介绍一种更适合图像、语音识别任务的神经网络结构——卷积神经网络(Convolutional Neural Network, CNN)。说卷积神经网络是最重要的一种神经网络也不为过,它在最近几年大放异彩,几乎所有图像、语音识别领域的重要突破都是卷积神经网络取得的。它在 2012 年崭露头角,Alex Krizhevsky 凭借它们赢得了那一年的 ImageNet 挑战赛(大体上相当于计算机视觉的年度奥林匹克),他把分类误差记录从 26% 降到了 15%,在当时震惊了世界。自那之后,大量公司开始将深度学习用作服务的核心。Facebook 将神经网络用于自动标注算法、谷歌将它用于图片搜索、亚马逊将它用于商品推荐、Pinterest 将它用于个性化主页推送、Instagram 将它用于搜索架构。打败李世石的AlphaGo也用到了这种网络。本文将详细介绍卷积神经网络的结构以及它的训练算法
机器学习算法系列(18):方差偏差权衡(Bias-Variance Tradeoff)
一、定义
1.1 感性解释
Bias和Variance是针对Generalization(泛化、一般化)来说的。在机器学习中,我们用训练数据集学习一个模型,我们通常会定义一个损失函数(Loss Function),然后将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(即将训练出来的模型运用于预测集),单纯地将训练数据集的Loss最小化,并不能保证解决更一般的问题时模型仍然是最优的,甚至不能保证模型是可用的。这个训练数据集的Loss与一般化的数据集(预测数据集)的Loss之间的差异就叫做Generalization error。
机器学习算法系列(17):非平衡数据处理
一、Introduction
常用的分类算法一般假设不同类的比例是均衡的,现实生活中经常遇到不平衡的数据集,比如广告点击预测(点击转化率一般都很小)、商品推荐(推荐的商品被购买的比例很低)、信用卡欺诈检测等等。
对于不平衡数据集,一般的分类算法都倾向于将样本划分到多数类,体现在模型整体的准确率很高。
但对于极不均衡的分类问题,比如仅有1%的人是坏人,99%的人是好人,最简单的分类模型就是将所有人都划分为好人,模型都能得到99%的准确率,显然这样的模型并没有提供任何的信息。