机器学习&深度学习基础

从业这么久了,做了很多项目,一直对机器学习的基础课程鄙视已久,现在回头看来,系统的基础知识整理对我现在思路的整理很有利,写完这个基础篇,开始把AI+cv的也总结完,然后把这么多年做的项目再写好总结。

学习路线
第一步:数学
主要为微积分、概率统计、矩阵、凸优化

第二步:数据结构/算法
常见经典数据结构(比如字符串、数组、链表、树、图等)、算法(比如查找、排序)
同时,辅助刷leetcode,提高编码coding能力

第三步:Python数据分析
掌握Python这门语言、和基本的数据分析、数据处理知识

第四步:机器学习
掌握常见经典的模型/算法(比如回归、决策树、SVM、EM、K近邻、贝叶斯、主题模型、概率图模型,及特征处理、模型选择、模型选择等等)
同时,辅助刷kaggle,培养对数据、特征的敏锐

第五步:深度学习
掌握神经网络、CNN、RNN、LSTM等常见经典模型、以及三大DL框架
同时,配套课程利用TensorFlow等开源框架做做DL等相关实验:http://blog.csdn.net/v_JULY_v/ … 61301

第六步:CV应用扩展

几个基础的概念:

一个机器学习通常应该包括的基本要素有:训练数据,带参数的模型,损失函数,训练算法。训练数据作用自不必说;带参数的模型是用来逼近f();损失函数是衡量模型优劣的一个指标,比如模型识别分类的准确度;训练算法也可以叫做优化函数,用于不断更新模型的参数来最小化损失函数,得到一个较好的模型,或者叫做学习机。接下来将介绍一些机器学习中的基本概念,可能没有很强的连贯性。

样本数据

样本数据就是我们上文提到的(x,y),其中x叫做输入数据(input data),y叫做输出数据(output data)或者叫做一个更加专业的名字——标签(label)。通常x和y都是高维矩阵,以x为例:

x=(x1,x2,x3,…,xi)

其中xi表示第i个输入样本,比如第i个文字,第i张图片,xi可以是一维文字向量,二维图片矩阵,三维视频矩阵,或者更加高维的数据类型,以一维向量为例:

xi=(x1i,x2i,x3i,…,xni)

其中xni表示xi数据的第n个元素的值,比如把图像展平之后第n个像素的灰度值等等。
标签y根据需求不同有各种形式,以最简单的n分类问题为例,yi就是一个n维的one-hot,其中一个值为1,其余的元素都为0,第几个元素为1就表明属于第几个类别。

数据集

完整的数据集表示为T={(x1,y1),(x2,y2),(x2,y2),…,(xi,yi)},对于一个学习机而言,不是所有的数据都用于训练学习模型,而是会被分为三个部分:训练数据、交叉验证数据、测试数据。

  • 训练数据(training data):顾名思义,训练数据用于训练学习模型,通常比例不低于总数据量的一半。
  • 交叉验证数据(cross validation data):交叉验证数据用于衡量训练过程中模型的好坏,因为机器学习算法大部分都不是通过解析法得到的,而是通过不断迭代来慢慢优化模型,所以交叉验证数据就可以用来监视模型训练时候的性能变化。
  • 测试数据(testing data):在模型训练好了之后,测试数据用于衡量最终模型的性能好坏,这也是模型性能好坏的衡量指标,交叉验证的指标只能用于监视和辅助模型训练,不能用来代表模型好坏,所以哪怕交叉验证的准确度是100%而测试数据的准确度是10%,那么模型也是不能被认可的。通常交叉验证和测试数据的比例各占一小半。

特征

特征是机器学习和模式识别领域一个比较特有的名词,在传统机器学习算法中,由于计算性能和参数的限制,所以输入的数据维数不能太高。我们手机随随便便一张照片就有几个MB的数据量,可能会有几百万个像素,这么高维的数据量我们是不能直接输入给学习机的,因此我们需要针对特别的应用提取相对应的特征向量,特征向量的作用主要有两个:

  1. 降低数据维度:通过提取特征向量,把原始数据的维度大大较低,简化模型的参数数量。
  2. 提升模型性能:一个好的特征,可以提前把原始数据最关键的部分提取出来,因此可以提高学习机的性能。

在传统的机器学习领域,如何提取一个好的特征是大家最关心的,所以机器学习的研究很大程度变成了寻找好的特征,因此也诞生了一个学科叫做特征工程。以下是一个用hog特征进行行人检测的例子,hog特征主要是检测物体的轮廓信息,所以可以用于行人检测。

模型

这里的模型可能用词不准确,但我想表达的是指:带有一些待训练参数,用于逼近前文提到的f()的参数集合。在参数空间,f()只是一个点,而我提到的模型也是一个点,并且由于参数可以变,所以我要做的只是让我模型的这个点尽可能的接近真实f()的那个点。机器学习的模型算法有很多,但是比较常用的模型可以概括为三种:

  1. 基于网络的模型:最典型的就是神经网络,模型有若干层,每一层都有若干个节点,每两个节点之间都有一个可以改变的参数,通过大量非线性的神经元,神经网络就可以逼近任何函数。
  2. 基于核方法的模型:典型的是SVM和gaussian process,SVM把输入向量通过一个核映射到高维空间,然后找到几个超平面把数据分成若干个类别,SVM的核是可以调整。
  3. 基于统计学习的模型:最简单的例子就是贝叶斯学习机,统计学习方法是利用数理统计的数学工具来实现学习机的训练,通常模型中的参数是一些均值方差等统计特征,最终使得预测正确概率的期望达到最大。

一个好的学习机模型应该拥有出色的表达逼近能力、易编程实现、参数易训练等特性。

监督与非监督学习

按照任务的不同,学习机可以分为监督学习(supervised learning)和非监督学习(unsupervised)两种,从数学角度来看两者的区别在于前者知道数据的标签y而后者不知道样本的标签y,所以非监督学习的难度要大一点。

举个通俗的例子,一个母亲交孩子认识数字,当母亲拿到一个数字卡片,告诉孩子这个是数字4是数字6,然后经过大量的教导之后,当目前拿到一个卡片问孩子这个是数字几,这个就是监督学习。如果母亲那一堆数字卡片,让孩子把卡片按照不同数字进行分堆,母亲告诉孩子他分的好不好,可能经过大量的训练,孩子就知道如何把卡片进行正确分堆了,这个就是无监督学习的例子。用一个不那么贴切的名词解释就是,监督学习可以看做分类问题,而无监督可以看做是聚类的问题。

当然还有两种特殊的类型,叫做半监督学习和强化学习,半监督学习是指部分样本是知道标签的,但是其他的样本是不知道标签。强化学习是另外一个特例,为了不混淆大家理解,这里不做解释,感兴趣的可以自行查阅,之后我会单独通过一篇博客来介绍。

监督学习是简单高效的,但是非监督学习是更加有用的,因为人工标注样本标签的代价是非常昂贵耗时的。

损失函数

损失函数(loss function)更严谨地讲应该叫做目标函数,因为在统计学习中有一种目标函数是最大化预测正确的期望概率,我们这里只考虑常见的损失函数。

损失函数是用来近似衡量模型好坏的一个很重要的指标,损失函数的值越大说明模型预测误差越大,所以我们要做的就是不断更新模型的参数,使得损失函数的值最小。常用的损失函数有很多,最简单的如0-1损失函数:

L(y,f(x))={01y=f(x)y≠f(x)

这个损失函数很好理解,预测对了损失为0,预测错了就为1,所以最完美的学习机的损失函数值就应该是0。当然最小二乘误差、交叉熵误差等损失函数也是很常用的,训练时用的损失函数是所有训练样本数据的损失值的和。有了损失函数,模型的训练就变成了一个很典型的优化问题。

优化函数

我们又了目标函数,也就是损失函数,现在我需要一个东西根据损失值来不断更新模型参数,这个东西就叫做优化函数。优化函数的作用就是在参数空间找到损失函数的最优解。梯度下降法是最熟知的优化函数,大家都用下山来形象描述这个算法。假如我们在山上,我们的目标是找到这座山的最低处(最小化损失函数),一个很简单的思路就是我找到当前位置下山角度最大的方向,然后朝着这个方向走,如下图所示
这里写图片描述
当然这种方法有个问题就是会陷入局部最优点(局部凹坑)出不来,所以各种更加好的优化函数逐渐被大家发现。一个好的优化函数应该有两个性能指标:拥有跳出局部最优解找到全局最优解的能力;拥有更快的收敛速度。

泛化能力、欠拟合和过拟合

泛化能力(generalization ability)是指机器学习模型对未知数据的预测能力,是学习方法本质上重要的性质,现实中采用最多的办法是通过误差来评价学习方法的泛化能力。但是这种评价是依赖测试数据集的,因为测试数据集是有限的,所以这种思路也不能说是完全靠谱,因此有人专门研究泛化误差来更好的表达泛化能力。

欠拟合(underfitting)和过拟合(overfitting)是两种要尽可能避免的模型训练现象,出现这两种现象就说明模型没有达到一个比较理想的泛化能力。欠拟合是指模型复杂度太低,使得模型能表达的泛化能力不够,对测试样本和训练样本都没有很好的预测性能。过拟合则相反,是模型复杂度太高,使得模型对训练样本有很好的预测性能,但是对测试样本的预测性能很差,最终泛化能力也不行。如下图所示,1和4展示的欠拟合,3和6展示的过拟合现象。而一个好的模型应该是如2和5一样,复杂度正合适,泛化能力较强。

这里写图片描述

欠拟合与过拟合

1.欠拟合:生成的拟合函数过于简单(例如 h(θ)=θ0+θ1x1)

2.过拟合:生产的拟合函数过于精确(例如h(θ)=θ0+θ1x1+…+θ6x6)

image

上图中,左图就是欠拟合的情况,曲线不能够很好的反映出数据的变化趋势;而右图是过拟合的情况,因为曲线经过了每一个样本点,虽然在训练集上误差小了,但是曲线的波动很大,往往在测试集上会有很大的误差。而中间图则是比较好的曲线。

当训练数据量很少时,容易发生过拟合,因为曲线会拟合这些少量数据点,而这些数据点往往不能代表数据的总体趋势,导致曲线波动大以及发生严重偏离。

欠拟合时,模型在训练集和测试集上都有很大误差(高偏差);过拟合时,模型在训练集上可能误差很小,但是在测试集上误差很大(高方差)。如果模型在训练集上误差很大,且在测试集上的误差要更大的多,那么该模型同时有着高偏差和高方差。

防止欠拟合方法:不要选用过于简单的模型

防止过拟合方法:不要选用过于复杂的模型;数据集扩增(可以是寻找更多的训练集,也可以是对原训练集做处理,比如对原图片翻转缩放裁剪等);正则化;Early stopping(在测试集上的误差率降到最低就停止训练,而不是不断降低在训练集上的误差)


L1正则化和L2正则化

L1正则化:在误差函数的基础上增加L1正则项:

C=C0+λn∑w|w|

L2正则化:在误差函数的基础上增加L2正则项:

C=C0+λ2n∑ww2

L1正则化和L2正则化都能够防止过拟合。简单的来说,权值w越小,模型的复杂度越低(当w全为0时模型最简单),对数据的拟合刚刚好(也就是奥卡姆剃刀法则)。如果从更加数学的解释来看,我们看下图:

image
  可以看出,过拟合的时候,曲线要顾及每一个点,最终形成的拟合函数波动很大。这就意味着函数在某些小区间里的导数值(绝对值)非常大。而由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

L1正则化对应着Lasso回归模型,L2正则化对应着岭回归模型。Lasso(L1正则化)得到的w往往比较稀疏,会出现很多0,因此能够剔除无用特征(降维)。


分类和回归

分类:输入新样本特征,输出类别(离散)。常见模型有:Logistic回归,softmax回归,因子分解机,支持向量机,决策树,随机森林,BP神经网络,等等

回归:输入新样本特征,输出预测值(连续)。常见模型有:线性回归,岭回归,Lasso回归,CART树回归,等等

参数学习算法和非参数学习算法

参数学习算法:模型有固定的参数列表θ0,θ1…(比如线性回归)

非参数学习算法:模型中参数的数目会随着训练集的增加而线性增长,或者参数的值会随着测试集的变化而变化(比如局部加权回归LWR就属于非参数学习算法)


偏差和方差

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。 高偏差对应的是欠拟合。高偏差时,模型在训练集和测试机上都有很大误差。

方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。 高方差对应的是过拟合。高方差时,模型在训练集上的误差很小,但是在测试集上的误差很大。

如果模型在训练集上误差很大,且在测试集上的误差要更大的多,那么该模型同时有着高偏差和高方差。


监督学习和无监督学习

监督学习:训练集中的每个样本既有特征向量x,也有标签y。根据样本的y来对模型进行“监督”,调整模型的参数。监督学习对应的是分类和回归算法。

无监督学习:训练集中的每个样本只有特征向量x,没有标签y。根据样本之间的相似程度和聚集分布来对样本进行聚类。无监督学习对应的是聚类算法。


分类和聚类

分类:事先定义好了类别,类别数不变。当训练好分类器后,输入一个样本,输出所属的分类。分类模型是有监督。

聚类:事先没有定义类别标签,需要我们根据某种规则(比如距离近的属于一类)将数据样本分为多个类,也就是找出所谓的隐含类别标签。聚类模型是无监督的。


判别模型和生成模型

判别模型:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。

生成模型:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。


归一化与标准化

归一化方法:

  • 把数变为(0,1)之间的小数

主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。

  • 把有量纲表达式变为无量纲表达式

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

标准化方法:

  • 数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。

归一化,一般的方法是 (x-min(x))/(max(x)-min(x)) 。 标准化,一般方法是(x-mean(x))/std(x) 。 其中mean(x)代表样本均值,std(x)代表样本标准差。这两种方法都是属于线性转换,都是按比例缩放的。

归一化和标准化的好处:

  • 归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。
  • 标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。

协方差和相关系数

协方差:表示两个变量在变化过程中的变化趋势相似程度,或者说是相关程度。

Cov(X,Y)=E[(X−μx)(Y−μy)]

当X增大Y也增大时,说明两变量是同向变化的,这时协方差就是正的;当X增大Y却减小时,说明两个变量是反向变化的,这时x协方差就是负的。协方差越大,说明同向程度越高;协方差越小,说明反向程度越高。

相关系数:也表示两个变量在变化过程中的变化相似程度。但是进行了归一化,剔除了变化幅度数值大小的的影响,仅单纯反映了每单位变化时的相似程度。

ρ=Cov(X,Y)σXσY

翻译一下:相关系数就是协方差分别除以X的标准差和Y的标准差。

当相关系数为1时,两个变量正向相似度最大,即X变大一倍,Y也变大一倍;当相关系数为0时,两个变量的变化过程完全没有相似度;当相关系数为-1时,两个变量的负向相似度最大,即X变大一倍,Y缩小一倍。

偏差,误差和方差

Bias(偏差),Error(误差),和Variance(方差)三者是容易混淆的概念,首先

Error2=Bias2+Variance

Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。如下图所示,随着模型的复杂度增加,模型预测的偏差会越来越小,但是方差越来越大,预测结果的分布会散开来。

机器学习和深度学习

目前所说的深度学习通常是指基于神经网络改进的深度学习网络,相比于传统的神经网络,深度学习网络拥有更加高的模型复杂度,所以可以直接把原始数据输入到学习机,不需要人工提取特征。所以如果不从数理角度考虑,传统机器学习和深度学习的最本质区别在于,深度学习拥有训练高复杂度模型能力,所以可以不用人工提取特征,即

深度学习=人工提取特征+传统机器学习方法

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值