机器学习学习笔记

思考

AI重要的是解决什么问题

生物体外意识 = 类似图的知识数据-基于经验(不断积累的基础数据)

为实现一个目标,通过意识完成的一系列动作,并积累经验

记忆是模糊的,可以节省存储空间

通用AI主要有两个问题

数据结构,类似图的结构,存储事物意识节点,并相互建立关联

算法,基于分析事物意识数据,得出结果

名词解释

机器学习

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

它是人工智能核心,是使计算机具有智能的根本途径。

深度学习

深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,深度学习在搜索技术数据挖掘,机器学习,机器翻译自然语言处理多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。

以算法区分深度学习应用,算法类别可分成三大类:

  • 常用于影像数据进行分析处理的卷积神经网络(简称CNN)

  • 文本分析或自然语言处理的递归神经网络(简称RNN)

  • 常用于数据生成或非监督式学习应用的生成对抗网络(简称GAN)

CNN

主要应用可分为图像分类(image classification)、目标检测(object detection)及语义分割(semantic segmentation)。

RNN

特色在于可处理图像或数值数据,并且由于网络本身具有记忆能力,可学习具有前后相关的数据类型。例如进行语言翻译或文本翻译,一个句子中的前后词汇通常会有一定的关系,但CNN网络无法学习到这层关系,而RNN因具有内存,所以性能会比较好。因为可以通过RNN进行文字理解,其他应用如输入一张图像,但是输出为一段关于图像叙述的句子。(如下图)

RNN虽然解决了CNN无法处理的问题,但其本身仍然有些缺点,所以现在很多RNN的变形网络,其中最常被使用的网络之一为长短记忆网络(Long Short-Term Network,简称LSTM)。这类网络的输入数据不限于是图像或文字,解决的问题也不限于翻译或文字理解。数值相关数据也同样可以使用LSTM进行分析,例如工厂机器预测性维修应用,可透过LSTM分析机台震动讯号,预测机器是否故障。在医学方面,LSTM可协助解读数以千计的文献,并找出特定癌症的相关信息,例如肿瘤部位、肿瘤大小、期数,甚至治疗方针或存活率等等,透过文字理解进行解析。也可结合图像识别提供病灶关键词,以协助医生撰写病理报告。

GAN

除了深度学习外,有一种新兴的网络称为强化学习(Reinforcement Learning),其中一种很具有特色的网络为生成式对抗网络(GAN)。

GAN的应用相关论文成长幅度相当大

这里不详述GAN的理论或实作方式,而是探讨GAN实际应用的场域。深度学习领域最需要的是数据,但往往不是所有应用都可以收集到大量数据,并且数据也需要人工进行标注,这是非常消耗时间及人力成本。图像数据可以通过旋转、裁切或改变明暗等方式增加数据量,但如果数据还是不够呢?目前有相当多领域透过GAN方法生成非常近似原始数据的数据,例如3D-GAN就是可以生成高质量3D对象。当然,比较有趣的应用例如人脸置换或表情置换。(如下图)

另外,SRGAN (Super Resolution GAN)可用于提高原始图像的分辨率,将作为低分辨率影像输入进GAN模型,并生成较高画质的影像(如下图)。这样的技术可整合至专业绘图软件中,协助设计师更有效率完成设计工作。

NVIDIA也有提供一些基于GAN的平台的应用,包含透过GauGAN网络,仅需绘制简单的线条,即可完成漂亮的画作,并且还能随意修改场景的风格(如下图)。

感知机

感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。感知机是一个有监督的学习算法;

DNN(全连接神经网络)

深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础

RNN

循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)

对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为深度学习(deep learning)算法之一 [2]  ,其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的循环神经网络

循环神经网络具有记忆性、参数共享并且图灵完备(Turing completeness),因此在对序列的非线性特征进行学习时具有一定优势 [4]  。循环神经网络在自然语言处理(Natural Language Processing, NLP),例如语音识别、语言建模、机器翻译等领域有应用,也被用于各类时间序列预报。引入了卷积神经网络(Convolutional Neural Network,CNN)构筑的循环神经网络可以处理包含序列输入的计算机视觉问题。

CNN

卷积神经网络(Convolutional Neural Network,CNN)

而神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)结构和功能的数学模型或计算模型。

神经网络由大量的人工神经元组成,按不同的连接方式构建不同的网络。CNN是其中的一种,还有GAN(生成对抗网络),RNN(递归神经网络)等,神经网络能够类似人一样具有简单的决定能力和简单的判断能力,在图像和语音识别方面能够给出更好的结果。

Facebook的研究小组发现了一个基于卷积神经网络的先进自然语言处理系统,其卷积网络优于RNN,而后者被认为是任何序列数据集的首选架构。虽然一些神经科学家和人工智能研究人员不喜欢CNN(因为他们认为大脑不会像CNN那样做),但基于CNN的网络正在击败所有现有的网络实现

NLP

NLP是神经语言程序学(Neuro-Linguistic Programming)的英文缩写。

神经网络

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

激活函数

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间 [2]  。公式如下

Tanh函数

Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。公式如下

ReLU函数

Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。公式如下

表达力

过拟合

在训练数据不够多时,或者over-training时,经常会导致over-fitting(过拟合)。其直观的表现如下图所所示

损失函数

损失函数就是用来表现预测与实际数据的差距程度

比如你做一个线性回归,实际值和你的预测值肯定会有误差,那么我们找到一个函数表达这个误差就是损失函数

“损失函数”是机器学习优化中至关重要的一部分。L1、L2损失函数相信大多数人都早已不陌生。那你了解Huber损失、Log-Cosh损失、以及常用于计算预测区间的分位数损失么?这些可都是机器学习大牛最常用的回归损失函数哦!

机器学习中所有的算法都需要最大化或最小化一个函数,这个函数被称为“目标函数”。其中,我们一般把最小化的一类函数,称为“损失函数”。它能根据预测结果,衡量出模型预测能力的好坏。

在实际应用中,选取损失函数会受到诸多因素的制约,比如是否有异常值、机器学习算法的选择、梯度下降的时间复杂度、求导的难易程度以及预测值的置信度等等。因此,不存在一种损失函数适用于处理所有类型的数据。这篇文章就讲介绍不同种类的损失函数以及它们的作用。

损失函数大致可分为两类:分类问题的损失函数和回归问题的损失函数。在这篇文章中,我将着重介绍回归损失。

假设函数

 假设函数就是假设数据的分布符合某一个函数,使函数能尽可能的代表样本。

分类器

分类器的作用:常规任务是利用给定的类别已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。

BP

神经网络主要是由三个部分组成的,分别是:1) 网络架构 2) 激活函数  3) 找出最优权重值的参数学习算法.

    BP算法就是目前使用较为广泛的一种参数学习算法.

    BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络。   

    既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?BP算法就是采用这样的思想设计出来的算法,它的基本思想:学习过程由信号的正向传播(求损失)与误差的反向传播(误差回传)两个过程组成。如图1所示为BP算法模型示意图.

SGD

梯度下降,常见的梯度下降有三种形式:BGD、SGD、MBGD,它们的不同之处在于我们使用多少数据来计算目标函数的梯度

大多数深度学习算法都涉及某种形式的优化。优化指的是改变x以最小化或最大化某个函数f(x)的任务。我们通常以最小化f(x)指代大多数最优化问题。我们把要最小化或最大化的函数称为目标函数(objective function)或准则(criterion)。当我们对其进行最小化时,我们也把它称为成本函数(cost function)、损失函数(loss function)或误差函数(error function)。

      梯度下降是深度学习中一种常用的优化技术。梯度是函数的斜率。它衡量一个变量响应另一个变量的变化而变化的程度。在数学上,梯度下降是一个凸函数,其输出是输入的一组参数的偏导数。梯度越大,坡度越陡(the greater the gradient, the steeper the slope)。从初始值开始,迭代运行梯度下降以找到参数的最佳值,以找到给定成本函数的最小可能值。

      梯度下降是一种优化算法,通常用于寻找深度学习算法中的权值及系数(weights or coefficients),如逻辑回归。它的工作原理是让模型对训练数据进行预测,并使用预测中的error来更新模型从而减少error(It works by having the model make predictions on training data and using the error on the predictions to update the model in such a way as to reduce the error)。

dropout

Dropout是深度学习中被广泛的应用到解决模型过拟合问题的策略,相信你对Dropout的计算方式和工作原理已了如指掌。这篇文章将更深入的探讨Dropout背后的数学原理,通过理解Dropout的数学原理,我们可以推导出几个设置丢失率的小技巧,通过这篇文章你也将对Dropout的底层原理有更深刻的了解。同时我们也将对Dropout的几个改进进行探讨,主要是讨论它在CNN和RNN中的应用以及它的若干个经典的变种。

经典CNN架构

resnet

zf net

VGG Net

LeNet

AlexNet

GoogleNet

DenseNet

Fast R-CNN

NN框架

caffe

TensorFlow(Google)

Pytorch(Facebook)

MxNet(亚马逊)

paddle(百度)

CNTK(微软)

其他名词

词向量

NNLM

NLP的基础网络

LSTM

长短期记忆 (LSTM)和门控循环单元(GRU)是最常见的 RNN 单元。

GRU

长短期记忆 (LSTM)和门控循环单元(GRU)是最常见的 RNN 单元。

attention

当我们用深度 CNN 模型识别图像时,一般是通过卷积核去提取图像的局部信息,然而,每个局部信息对图像能否被正确识别的影响力是不同的,如何让模型知道图像中不同局部信息的重要性呢?答案就是注意力机制。

GAN

生成对抗网络

在GAN中,两个网络相互竞争,最终达到一种平衡,即生成网络可以生成数据,而鉴别网络很难将其与实际图像区分开。

一个真实的例子就是警察和造假者之间的斗争:假设一个造假者试图制造假币,而警察试图识破它。最初,造假者没有足够的知识来制造看起来真实的假币。随着时间的流逝,造假者越来越善于制造看起来更像真实货币的假币。这时,警察起初未能识别假币,但最终他们会再次成功识别。

这种生成–对抗过程最终会形成一种平衡。GAN 具有极大的优势。

经典GAN网络

DCGAN

pix2pix

cycleGAN

starGAN

text2Img

监督学习和无监督学习

监督学习

主要用于一部分数据集(训练数据)有某些可以获取的标签,但剩余的样本缺失并且需要预测的场景中。监督学习模式采用的输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果。

利用“训练数据”,算法模型会生成映射函数,训练过程会不断持续,直到模型在训练数据上获得期望的精确度。  监督学习的常见应用场景有分类问题和回归问题常见监督学习算法有回归算法、DT (决策树)算法、RF (随机森林)算法、K近邻算法,以及BP (反向传递)神经网络算法等。

无监督学习典型的就是聚类算法

主要用于从未标注数据集中挖掘相互之间的隐含关系的情况。无监督学习模式,数据无须预先进行标识。

聚类算法就是将数据自动聚类成几个类别,相似度大的聚在一起,主要用来做数据的划分。

常见的聚类算法就是 K-Means、最大期望算法(EM)。

监督学习算法的话,主要就是我们常说的卷积神经网络(CNN)、多层感知机(MLP)。

像 GAN、压缩感知这种则是无监督学东西的算法。

强化学习

强化学习被认为是通向一般智能的途径之一,其中计算机或智能体通过与现实世界、物体或实验互动或者通过反馈来进行学习。训练强化学习智能体和训练狗很像,它们都是通过正、负激励进行的。当你因为狗捡到球而奖励它一块饼干或者因为狗没捡到球而对它大喊大叫时,你就是在通过积极和消极的奖励向狗的大脑中强化知识。

我们对AI智能体也做了同样的操作,但正奖励将是一个正数,负奖励将是一个负数。尽管我们不能将强化学习视为与 CNN/RNN 等类似的另一种架构,但这里将其作为使用深度神经网络来解决实际问题的另一种方法,其配置如图1.17所示。

迁移学习

Neural style

迁移学习

finetune

就是用别人训练好的模型,加上我们自己的数据,来训练新的模型。finetune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中。

  finetune的好处在于不用完全重新训练模型,从而提高效率,因为一般新训练模型准确率都会从很低的值开始慢慢上升,但是fine tune能够让我们在比较少的迭代次数之后得到一个比较好的效果。

  在数据量不是很大的情况下,finetune会是一个比较好的选择。但是如果你希望定义自己的网络结构的话,就需要从头开始了。

capsule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HELLO XF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值