硬啃:《deeplearning》机器学习基础篇

CodeByZhou CodeByZhou     2022-10-21     535

关键词:

深度学习已经成为了当代人类生活中不可缺少的部分,自从2006年被正式提出以来,经过十几年的发展演变,深度学习的进展在人类生活中创造了巨大的价值财富。也有更多的人希望能够从深度学习中学习到更多的知识,今天开始我从基础开始进行深度学习的系统学习。

首先,需要大家有一定的基础知识的学习,其中包含线性代数、概率论与数理统计、简易数值计算等基础知识,这些知识在本科学习中都会有所学习,不清楚的可以简单回顾以下基本概念。更加熟练的基础功底,能够方便后续的知识学习。

深度学习是机器学习的一个分支,我们如果要彻底的学习好深度学习,就要对机器学习有一定神刻的理解。

学习算法

所谓算法,就是机器学习通过从大量数据中“学习”到程序员想要让机器明白的内容的指令过程。对于“学习”的定义有一个严谨而简介的说法:“对于某类额任务 T T T和性能度量 P P P,一个计算机程序背认为可以从经验 E E E中学习是指,通过经验 E E E改进后,它在任务 T T T上由性能度量 P P P衡量的性能有所提升。”

以上的内容可能有些绕口,但是也十分直观神刻的表述了机器学习中“学习”的重要性质。接下来我不会进行对这些指标的严格定义,而是简化表述这些不同的指标对于机器学习的意义,以及如何通过这些指标来确认机器学习的算法设计。

任务 T T T

所谓机器学习就是我们希望通过一些人为的方式,设计出一套规则能够让机器始终遵循这一规则,当然在日常生活中更多事情我们并不能实现设计好,所以很多的情况我们很难去提前预知并设计好让机器如何运作。所以我们希望通过机器自主的去学习探索的方式,让机器自己了解学会一种我们希望它能够掌握的规则模式。

从“任务”角度出发,我们希望机器“学习”的并不是某一段学习过程,而是我们希望它完成的某项任务。比如我们希望机器能够自动识别出每个人是谁,那么人脸识别,就是我们这项工程中的任务所在。我们需要设计一套符合逻辑的编码告诉设备,如何进行人脸的识别判断。

在机器学习任务中机器主要负责对样本的处理。所谓样本就是我们希望机器能够从中收集到可量化的特征的数据集合。我们常常会把样本表示成为一个向量 x ∈ R n x\\in \\mathbbR^n xRn ,其中每一个 x i x_i xi都是某一个样本的特征值。例如照片就是每一个像素点的值。

说了这么多,机器学习能解决哪些任务,下面基本罗列一些当下能够解决的现实问题:

  • 分类:在这类任务中,计算机程序需要用户指定某些输入属于分类 k k k中的哪一类。完成该任务前提,需要给定一个函数 f : R n → 1 , . . . , k f:\\mathbbR^n→\\1,...,k\\ f:Rn1,...,k。当向量输入 x x x使得 y = f ( x ) y = f(x) y=f(x),用户将会把当前输入分类到 y y y所代表的分类中去。分类任务主要有对象识别,人脸识别等方向。
  • 输入缺失分类:当然在日常生活中,并不能保证所有问题都能够有一个确定稳定的输入量,当这类任务的特征向量无法保证时,分类任务的难度就指数级的上升。为了解决这类问题,我们设计者需要设定好一个输入映射输入的指定函数,当输入的某部分缺失时,将有计算机对一组函数进行学习,而不只是单独学习一个分类,当有 n n n个变量输入时,就会存在 2 n 2^n 2n种的分类函数,计算机只需要学习一个满足联合概率分布的函数,就可以解决此类问题。这类问题广泛出现在医疗中,因为医疗实验往往是存在危险性与未知性,所以实操展现的数据并不能是完整的,所以需要这类问题予以解决。
  • 回归:这类任务主要是为了预测输入值产生的结果。在这类任务中,计算机程序需要对输入值进行一个返回值,为了解决这类问题,就需要设计函数 f : R n → R f:\\mathbbR^n→\\mathbbR f:RnR。除了最后的返回值不同,这类任务与分类任务其实很相似,主要应用于股票市场预测或者保险预测中。
  • 转录:在这类任务中,计算机需要将一些非结构化数据转化为离散的文本形式。例如一些电信号或者光学信号的转化为文本序列。现代主要在生活中的应用就是语音识别,这种在我们日常生活中是一款很常见深度学习应用。
  • 机器翻译:这类任务顾名思义就是简化加快翻译任务,简单来说就是快捷翻译,大家经常用的有道词典或者百度翻译、谷歌翻译都是这类深度学习应用的展现。
  • 结构化输出:结构化输出的任务是输出向量或者多个包含多值的数据结构。这个应用范围很大,包含上述的转录以及翻译任务在内的其他任务。例如语法分析,标记处语句中每个词的属性类别。另一个就是图像分割,将图像中的不同类别区分开来,
  • 异常检测:这类任务中,计算机程序在一组事件或者对象中筛选,并标记不正常或非典型个体。异常检测任务的一个示例就是信用卡欺骗检测。通过对购买习惯的建模,信用卡公司可以检测你的卡是否被盗用,如果出现不正常购买行为,信用卡公司可以快捷冻结该卡,以防止更大的损失产生。
  • 合成和采样:这类任务中,机器学习程序生成一些和训练数据相似的新样本。通过机器学习,合成和采样在媒体应用中十分有用,可避免艺术家大量昂贵的手工工作。例如,在视频游戏中可自动生成大型物体或物件纹理,而不是让手绘工作者完整的手绘所有图片。更例如在语音合成中,可以提供文字,并转化为正常自然的语音输出。
  • 缺失值填补:这类任务中,机器学习算法给定新样本 x ∈ R n x \\in\\mathbbR^n xRn x x x中某些元素 x i x_i xi缺失,算法将其补充完整。
  • 去噪:在这类任务中,机器学习输入是,干净样本 x ∈ R n x \\in \\mathbbR^n xRn经过未知的损坏损失后会得到损失样本 x ^ ∈ R n \\hatx \\in \\mathbbR^n x^Rn,算法通过损坏样本进行预测干净样本 x x x,或者更加一般预测条件概率分布 p ( x ∣ x ^ ) p(x|\\hatx) p(xx^)
  • 密度估计概率质量函数估计:在密度估计中,机器学习算法学习函数 p m o d e l : R n → R p_model : \\mathbbR^n → \\mathbbR pmodel:RnR,其中 p m o d e l ( x ) p_model(x) pmodel(x)可以解释成样本采样空间的概率密度函数(前提 x x x是连续的)或者概率质量函数(前提 x x x是离散的)。算法必须知道什么情况样本聚集,什么情况下不太可能出现。密度估计可以显式地获得概率分布结构。但是大多数情况下这一情况都是很艰难的,因为 p ( x ) p(x) p(x)十分难算。

当然还有很多的同类型任务或其他类型任务。需要了解详细的同学可以查阅相关资料进一步了解,这里知识初步一个认识。

性能度量 P P P

当然只有任务我们并不能只看他是否能解决问题,还要看他解决问题的能力,如果消耗的时间和资金过多,该算法也是不值得推荐的。所以对于每一个任务 T T T,都会特定的测算出一个性能度量 P P P

针对上述机器学习所解决的任务,我们通常会把这种度量分为准确率错误率。顾名思义,准确率是指输出正确情况的结果所占全部结果的比率,错误率类似。错误率通常称为0-1损失期望。在一个特定的样本中,若结果是对的则0-1损失为 0 0 0;否则是 1 1 1。但是这一标准并不能应用到所有任务中,比如密度估计,错误率就是一个没有意义的指标。最常用的就是输出模型中某些样本在概率对数的平均值。

当然,如果只让计算机学习测试这些已经训练好的数据也是不行的,在未知数据上的准确度也是我们必须要测试的。因此,我们要单独划分出测试集。这要与训练集相区分,以保证测试的准确性。

在实际应用中,性能度量的设计往往很难确定,是确定一个大范围的指标,还是确定十分精细的小标签,这都需要我们来去测试与调节,所以在设计中要选择好方向,不然结果往往会与预期效果偏差甚远。

经验 E E E

经验,这个词语我们在人类的日常生活中经常听到,一个人工作的经验,往往能够影响这个人在工作中的准确度和效率。那么机器学习中的经验,往往是区分两类机器学习的指标,其中分别为无监督算法和监督算法。

大部分的学习算法基本都是在一个给定的数据集上获取经验。数据集就是很多样本的集合,或者可以称它们为数据点

Iris(鸢尾花卉)数据集是统计学家和机器学习研究者使用了很久的一个数据集,它是由150个鸢尾花卉植物的不同部分测量值的集合。每个单独的植物个体属于一个样本,每个样本包含了当前个体植物的属性特征的测量结果:萼片长度、萼片宽度、花瓣长度和花瓣宽度。以及包含了鸢尾花卉的分类统计,共有三个类别。

无监督学习算法训练包含多种特征的数据集,但是这个数据集并不会给明确的分类,而是由机器自己去判断这个数据集上有用的属性特征。在深度学习中,我们通常要这个模型的概率分布,显式地,比如密度估计,隐式地、比如合成和去噪。还有一些其他的无监督模型,例如聚类,将数据集分成相似的集合予以输出。

监督学习算法同样是训练含有多种特征的数据集,但是这些数据集都已经包含了人为给出的具体分类,这种分类我们称为是标签(label) 或者目标(target) 。例如,Iris数据集就表明了每种鸢尾花的种类,监督学习通过这种数据集的训练,学习到如何根据所给的特征值,进行区分。

简而言之,无监督学习就是观察随机的向量,将这些杂乱无章的数据,尽可能的计算出相互关联的关系;而监督学习就是把这些随机数据向量,向固定的值去引导,让随机的 x → y x → y xy

这两个算法并不是十分严格的区分,之间可以两者共用。例如,概率的链式法则表明对随机向量 x ∈ R n x \\in R^n xRn,联合分布可以分解为

p ( x ) = ∏ i = 1 n p ( x i ∣ x 1 , . . . , x i − 1 ) p(x) = \\displaystyle\\prod_i = 1^n p(x_i |x_1,...,x_i-1) p(x)=i=1np(xix1,...,xi1)

该分解意味着我们可以将它拆分成 n n n个监督学习的问题,来解决这个表面上的无监督学习 p ( x ) p(x) p(x)。另外,当我们求解监督学习问题 p ( y ∣ x ) p(y|x) p(yx)时,也可以用传统的无监督学习策略学习联合分布 p ( x , y ) p(x,y) p(x,y),然后再推断

p ( y ∣ x ) = p ( x , y ) ∑ y ′ p ( x , y ′ ) p(y|x) = \\dfracp(x,y)\\sum_y'p(x,y') p(yx)=yp(x,y)p(x,y)

尽管这两个学习算法并没有严格的定义区分,但是它们有助于我们对机器学习的理解学习。

当然仍有一些学习算法并不是只训练与一个固定的数据集上。例如,强化学习算法会和环境变化交互,所以学习系统和它训练的过程会有反馈回路。这类算法有兴趣的同学可以查阅相关资料进一步学习,本文就不再详细描述。

示例:线性回归

之前我们有将机器学习算法定义为:通过经验以提高计算机程序在某些任务上性能的算法。为了方便大家的学习理解,在本文最后,将会展示一个基础例子:线性回归

简而言之,线性回归就是解决回归问题,我们通过建立一个循环系统,将向量 x ∈ R n x \\in \\mathbbR^n xRn作为输入,预测值 y ∈ R y\\in \\mathbbR yR作为输出。线性回归的输出,就是下一次的输入。而 y ^ \\haty y^作为预测模型预测出 y y y的值,我们定义以下输出

y ^ = ω T x \\haty = \\omega^T x y^=ωTx

其中 ω ∈ R n \\omega \\in \\mathbbR^n ωRn参数向量。

参数是控制系统行为的值。在这里, ω i \\omega_i ωi是系数,要和特征值 x i x_i xi相乘后累计相加。我们可以把 ω \\omega ω看作一组决定预测值的影响权重。如果权重为正数,那么在与特征值相乘后,最后的预测值会增加;如果权重为负数,那么在与特征值相乘后,最后的预测值会减少。当权重值很大,那么它会对最后的结果有很大的影响;当权重值很小,那么它会对最后的预测结果带来的影响也会很小。

因此,我们可以定义一个任务 T T T:通过输出 y ^ = ω T x \\haty=\\omega^Tx y^=ω查看详情

机器学习(machinelearning)&深度学习(deeplearning)资料

机器学习(MachineLearning)&深度学习(DeepLearning)资料機器學習、深度學習方面不錯的資料,轉載。原作:https://github.com/ty4z2008/Qix/blob/master/dl.md原作作者會不斷更新。本文更新至2014-12-21《BriefHistoryofMachineLearning》介绍:这是一篇介绍... 查看详情

机器学习(machinelearning)与深度学习(deeplearning)资料汇总

...;从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverview》介绍:这是瑞士人工智能实验室JurgenSchmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从1940... 查看详情

转载deeplearning:七(基础知识_2)

前面的文章已经介绍过了2种经典的机器学习算法:线性回归和logistic回归,并且在后面的练习中也能够感觉到这2种方法在一些问题的求解中能够取得很好的效果。现在开始来看看另一种机器学习算法——神经网络。线性回归或... 查看详情

机器学习资料

...从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:A 查看详情

近200篇机器学习&深度学习资料分享

...从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetwork 查看详情

#deeplearning回顾#之lenetalexnetgooglenetvggresnet

...讲的是2006年Hinton他们的SciencePaper,当时提到,2006年虽然DeepLearning的概念被提出来了,但是学术界的大家还是表示不服。当时有流传的段子是Hinton的学生在台上讲paper时,台下的机器学习大牛们不屑一顾,质问你们的东西有理论... 查看详情

机器学习技术系列:一篇图文笔记了解机器学习基础知识

导言最近有小半年由近半数工作和生活时间在机器学习技术(ML)的学习与工程实践中,感觉自己阅读了几本ML方面好书,找到了一些更好的学习网站,所以重新梳理了一下自己理解的的ML基础知识。相关参考摘录书籍及网站如下... 查看详情

machine&deeplearning概述

本节开始进入机器学习和深度学习的基础理论系统学习阶段,博客内容为在学习过程中整理的笔记。1.机器学习概念:多领域交叉学科,涉及概率论,统计学、逼近论,凸分析,算法及复杂度理论等多门学科。专门研究计算机怎... 查看详情

深度学习fpga实现基础知识6(deeplearning(深度学习)学习资料大全及csdn大牛博客推荐)

...习、计算机视觉、人机交互和人工智能等领域作品:DeepLearning(深度学习)学习笔记整理系列网友评价&#x 查看详情

python学习基础篇

一:机器码和字节码机器码计算机能够直接识别,字节码计算机不能直接识别。高级语言:例如Pythonjavac#phpc++(字节码)低级语言:c,汇编(机器语言)二:语言之间的对比java的执行效率比Python的执行效率高,但比Python的开发效... 查看详情

李宏毅《机器学习》丨4.deeplearning(深度学习)

Author:AXYZdong李宏毅《机器学习》系列参考视频地址:https://www.bilibili.com/video/BV1Ht411g7Ef参考文档:DataWhale文档文章目录一、深度学习发展历史二、深度学习三个步骤2.1Step1:神经网络(Neuralnetwork)2.2Step2... 查看详情

如何搞懂机器学习中的线性回归模型?机器学习系列之线性回归基础篇

...原理都是由多元统计分析发展而来,但在数据挖掘和机器学习领域中,也是不可多得的行之有效的算法模型。一方面,线性回归蕴藏的机器学习思想非常值得借鉴和学习,并且随着时间发展,在线性回归的基... 查看详情

deeplearning.ai构建机器学习项目week1听课笔记

这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训。 1.正交化(Othogonalization)  设计机器学习系统时需要面对一个问题是:可以尝试和改变的东西太多太多了。牛... 查看详情

361机器学习常见算法

K-近邻算法(KNearestNeighbors)参考:机器学习实战教程(一):K-近邻算法(史诗级干货长文)决策树算法(DecisionTree)参考:机器学习实战教程(二):决策树基础篇之让我们从相亲说起参考:机器学习实战教程(三):决策树... 查看详情

sklearn机器学习基础(day02基础入门篇)(代码片段)

文章目录基本算法使用(Sklearn)算子API调用分步曲数据分析分步曲分类算法KNN算法网格优化KNN案例(预测facebook签到位置)数据清洗KNN处理预测完整代码朴素贝叶斯算法决策树案例可视化决策树随机森林回归与聚类算... 查看详情

《2021机器学习-李宏毅》学习笔记

文章目录简介内容示意个人学习笔记01-Regression02.1-deeplearning-general_guidance02.2-deeplearning-类神经网络优化技巧02.3-deeplearning-loss_of_classification03-CNN04-Self-attention05-Transformer06-Generative_Model(GAN)07-Self-S 查看详情

深度学习基础阶段

IDH_1000=1.1课程介绍&机器学习介绍.html;EvernoteExportIDH_1001=1.2深度学习(DeepLearning)介绍.html ;EvernoteExportIDH_1002=2基本概念(BasicConcepts).html ;EvernoteExportIDH_1003=3.1决策树(decisiontree)算法.html ;EvernoteExpo 查看详情