前段时间,最新一代AI模型GPT-4在2023年3月14日首发。距离上一代ChatGPT-3.5发布还不到4个月,OpenAI的技术储备让业界再度调高了对人工智能发展速度的预期,再次掀起了AI浪潮。这款多模态预训练大模型实现了以下几个方面的飞跃式提升:强大的识图能力;文字输入限制提升至 2.5 万字;回答准确性显著提高;能够生成歌词、创意文本,实现风格变化。也再次见证了大模型的可行性和无限性,业界有人称之为“ChatGPT革命”。
AI的学习热潮也被再次掀起。要深入了解AI,基础知识的储备是必不可少的。小马通过去年对AI的短暂学习,整理了一些知识点,点到为止,用于备忘也希望对大家有所帮助。
目前人工智能的发展还只是初级阶段。因此,目前狭义上人工智能专业以及应用,叫做机器学习。
一、适用的任务:模式识别(面部/口语识别),异常识别(信用卡交易),预测(股票价格)
二、常见的任务:回归分析, 分类分析, 聚类分析
机器学习任务
1.回归分析,是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。
(1)回归分析是建模和分析数据的重要工具
(2)估计了两个或多个变量之间的关系
(3)优点
[1] 表明自变量和因变量之间的显著关系;
[2] 表明多个自变量对一个因变量的影响强度。
(4)常用算法:线性回归、逻辑回归、多项式回归、逐步回归、岭回归等
2.分类分析,是监督学习,是为了确定一个点的类别,具体类别是已知的
(1)常用算法:K近邻、决策树、逻辑回归、支持向量机、随机森林等
(2)分类网络参考文章
[1] 各种分类网络介绍
3.聚类分析, 无监督学习,是将一系列点分成若干类,事先是没有类别的
(1)按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得相同簇内的数据对象的相似性尽可能大,不同簇中的数据对象的差异性也尽可能地大。
(2) 常用算法:分为基于划分,密度,层次,网络,模型等的聚类
三、算法
(1)回归常用算法:线性回归(一元线性回归、代价函数(损失函数,Loss Function): 衡量回归模型误差的函数、梯度下降算法、多元线性回归、特征缩放)、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归
(2)分类常用算法:K近邻、决策树、朴素贝叶斯、逻辑回归、支持向量机、随机森林
(3)聚类常用算法:分为基于划分,密度,层次,网络,模型等的聚类
四、算法选择(考虑数据)
(1)特征值是离散型变量还是连续型变量
(2)特征值中是否存在缺失的值,何种原因造成
(3)数据中是否存在异常值
(4)某个特征发生的频率如何(是否罕见)
五、分类模型和回归模型区别
六、神经网络
1.循环神经网络(Recurrent Neural Network)
循环神经网络是一种人工神经网络。
(1)是前馈神经网络的一种改进形式, 包含环和自重复
(2)隐藏层中的每个神经元接收具有特定时间延迟的输入。需要在当前的迭代中访问之前的信息。例如,当我们试图预测一个句子中的下一个单词时,我们首先需要知道之前使用的单词。
(3)可以处理输入并跨时共享任意长度和权重。模型中的计算会考虑到历史信息。问题是计算速度慢。
(4)不能考虑当前状态的任何未来输入, 也无法记住很久以前的信息。考虑时间延迟,但如果有大量的相关数据,RNN很容易失败.
(5)应用: 机器翻译, 机器人控制, 时间序列预测, 语音识别, 语音合成, 时间序列异常检测, 节奏学习, 音乐创作
2. 卷积网络
什么是卷积。
卷积的意义
用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。
把一个点的像素值用它周围的点的像素值的加权平均代替。
a. 卷积神经网络CNN: 专门解决图像问题的,可用把它看作特征提取层,放在输入层上,最后用MLP 做分类。
(1)结构包括输入层、隐藏层和输出层
[1] 隐含层包含卷积层、池化层和全联接层3类常见构筑。
b. 深度卷积网络: 主要用于图像分类、图像聚类和目标识别
(1)DNN 被用来添加更复杂的特征,以便它能够更准确地执行任务。
(2)应用: 识别面部,街道标志,肿瘤; 图像识别; 视频分析; 自然语言处理; 异常检测; 药物发现; 跳棋游戏; 时间序列预测
chatgpt使用的「Transformer」是一种新的神经网络结构,其仅基于注意力机制,抛弃了传统的循环或卷积神经网络结构。
七、激活函数
激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
常用的激活函数:
Sigmoid函数
Tanh函数
ReLU函数
激活函数选择:
(1) 首先尝试ReLU,速度快,但要注意训练的状态.
(2) 如果ReLU效果欠佳,尝试Leaky ReLU或Maxout等变种。
(3) 尝试tanh正切函数(以零点为中心,零点处梯度为1)
(4) sigmoid/tanh在RNN(LSTM、注意力机制等)结构中有所应用,作为门控或者概率值.
(5) 在浅层神经网络中,如不超过4层的,可选择使用多种激励函数,没有太大的影响。
八、损失函数
损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的参数估计(parametric estimation),在宏观经济学中被用于风险管理(risk management)和决策 ,在控制理论中被应用于最优控制理论(optimal control theory) 。
机器学习模型关于单个样本的预测值与真实值的差称为损失。损失越小,模型越好,如果预测值与真实值相等,就是没有损失。用于计算损失的函数称为损失函数。模型每一次预测的好坏用损失函数来度量。
可参看教程。
损失函数特点:
恒非负
误差越小函数值越小
收敛快
八、什么是召回算法
推荐服务的流程主要有 3 步:获取用户特征 -> (召回/召回算法) -> 调用推荐模型 -> (粗排、精排)。
在实际应用中,物品列表规模很大,如果对所有的物品都调用模型打分,在性能上是不可接受的,因为计算耗时过长从而影响用户体验。
所以,一种常见的做法是将推荐列表生成分为召回和排序两步。召回的作用是从大量的候选物品中(例如上百万)筛选出一批用户较可能喜欢的候选集 (一般是几百)。排序又分为粗排和精排,粗排就是选出打分最高的那一部分物品。更进一步,对粗排得到的物品列表,可能需要人工调整,这就是精排。
推荐系统一般会分为召回和排序两个阶段,召回可以看成是推荐前的初筛过程,排序是对初筛的结果进行精细打分排序的过程。召回和排序两个阶段中使用的算法就是推荐系统的核心算法。
一般在工业级推荐系统中,涉及到的推荐候选集是非常大的,比如淘宝上就有上亿的商品。召回其实就是一个初筛的过程,先通过简单的算法和策略将推荐候选集的规模限制在一个比较小的集合(一般几百到几千个),然后再用精准的排序算法对候选集进行精细排序。这么做的目的是将推荐过程拆解为两个先后依赖的步骤,这样做的价值一是将问题解耦,二是降低问题的复杂度,可以更好地工程实现。
基于召回算法的初筛目的,召回算法一般可以用比较简单的算法来实现,这样可以快速在大规模候选集中将待推荐的物品筛选出来,简单的召回算法在工程实现和效率上都是更好的选择。
另外,为了不至于错失用户可能真正喜欢的物品(如果召回阶段没有被筛选出来,那么这个物品就不会推荐给用户了),一般会用多种召回算法,每个算法可以从不同的维度来将用户喜欢的物品筛选出来。选择多个召回算法的思路有点类似集成学习,通过多路召回起到“三个臭皮匠,顶个诸葛亮”的作用。
推荐算法是机器学习的分支,所以准确度评估一般会采用机器学习效果评估一样的策略。一般是将训练数据分为训练集和测试集,用训练集训练模型,用测试集评估模型的预测误差。
一些有助于理解的概念图片:
相关资料:
chatgpt是怎么炼成的(很不错)
gpt4科普(结合上个视频也很不错)