文章目录
人工智能(Artificial Intelligence)
Artificial Intelligence,也叫 AI,这是一个比较统称的说法,通俗来说就是让机器能像人一样对事物做出反应,该领域的研究包括机器人、图像识别(CV)、自然语言处理(NLP)、数据处理(BI)和专家系统等。
人工智能发展阶段
按照人工智能的发展程度,行业一般将其分为三个层次:
- 计算智能:机器能够像人类一样进行计算,诸如神经网络和遗传算法的出现,使得机器能够更高效、快速处理海量的数据。
- 感知智能:机器能听懂我们的语言、看懂世界万物,语音和视觉识别就属于这一范畴。
- 认知智能:机器将能够主动思考并采取行动,实现全面辅助甚至替代人类工作。
目前,全球的人工智能仍处于感知智能的发展阶段。
人工智能发展历史
这块大概了解一下就好。
1、 人工智能的诞生(20世纪40~50年代)
1950年:图灵测试
1950年,著名的图灵测试诞生,按照“人工智能之父”艾伦·图灵的定义:如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。同一年,图灵还预言会创造出具有真正智能的机器的可能性。
1954年:第一台可编程机器人诞生
1954年美国人乔治·戴沃尔设计了世界上第一台可编程机器人。
1956年:人工智能诞生
1956年夏天,美国达特茅斯学院举行了历史上第一次人工智能研讨会,被认为是人工智能诞生的标志。会上,麦卡锡首次提出了“人工智能”这个概念,纽厄尔和西蒙则展示了编写的逻辑理论机器。
2、 人工智能的黄金时代(20世纪50~70年代)
1966年~1972年:首台人工智能机器人Shakey诞生
1966年~1972年期间,美国斯坦福国际研究所研制出机器人Shakey,这是首台采用人工智能的移动机器人。
1966年:世界上第一个聊天机器人ELIZA发布
美国麻省理工学院(MIT)的魏泽鲍姆发布了世界上第一个聊天机器人ELIZA。ELIZA的智能之处在于她能通过脚本理解简单的自然语言,并能产生类似人类的互动。
1968年:计算机鼠标发明
1968年12月9日,美国加州斯坦福研究所的道格·恩格勒巴特发明计算机鼠标,构想出了超文本链接概念,它在几十年后成了现代互联网的根基。
3、 人工智能的低谷(20世纪70~80年代)
20世纪70年代初,人工智能遭遇了瓶颈。当时的计算机有限的内存和处理速度不足以解决任何实际的人工智能问题。要求程序对这个世界具有儿童水平的认识,研究者们很快发现这个要求太高了:1970年没人能够做出如此巨大的数据库,也没人知道一个程序怎样才能学到如此丰富的信息。由于缺乏进展,对人工智能提供资助的机构(如英国政府、美国国防部高级研究计划局和美国国家科学委员会)对无方向的人工智能研究逐渐停止了资助。美国国家科学委员会(NRC)在拨款二千万美元后停止资助。
1997年5月10日,IBM“深蓝”超级计算机再度挑战卡斯帕罗夫,比赛在5月11日结束,最终“深蓝”以3.5:2.5击败卡斯帕罗夫,成为首个在标准比赛时限内击败国际象棋世界冠军的电脑系统。供
4、 人工智能的繁荣期(1980年~1987年)
1981年:日本研发人工智能计算机
1981年,日本经济产业省拨款8.5亿美元用以研发第五代计算机项目,在当时被叫做人工智能计算机。随后,英国、美国纷纷响应,开始向信息技术领域的研究提供大量资金。
1984年:启动Cyc(大百科全书)项目
在美国人道格拉斯·莱纳特的带领下,启动了Cyc项目,其目标是使人工智能的应用能够以类似人类推理的方式工作。
1986年:3D打印机问世
美国发明家查尔斯·赫尔制造出人类历史上首个3D打印机。
5、 人工智能的冬天(1987年~1993年)
“AI(人工智能)之冬”一词由经历过1974年经费削减的研究者们创造出来。他们注意到了对专家系统的狂热追捧,预计不久后人们将转向失望。事实被他们不幸言中,专家系统的实用性仅仅局限于某些特定情景。到了上世纪80年代晚期,美国国防部高级研究计划局(DARPA)的新任领导认为人工智能并非“下一个浪潮”,拨款将倾向于那些看起来更容易出成果的项目。
6、 人工智能真正的春天(1993年至今)
1997年:电脑深蓝战胜国际象棋世界冠军
1997年5月11日,IBM公司的电脑“深蓝”战胜国际象棋世界冠军卡斯帕罗夫,成为首个在标准比赛时限内击败国际象棋世界冠军的电脑系统。
2011年:开发出使用自然语言回答问题的人工智能程序
2011年,Watson(沃森)作为IBM公司开发的使用自然语言回答问题的人工智能程序参加美国智力问答节目,打败两位人类冠军,赢得了100万美元的奖金。
2012年:Spaun诞生
加拿大神经学家团队创造了一个具备简单认知能力、有250万个模拟“神经元”的虚拟大脑,命名为“Spaun”,并通过了最基本的智商测试。
2013年:深度学习算法被广泛运用在产品开发中
Facebook人工智能实验室成立,探索深度学习领域,借此为Facebook用户提供更智能化的产品体验;Google收购了语音和图像识别公司DNNResearch,推广深度学习平台;百度创立了深度学习研究院等。
2015年:人工智能突破之年
Google开源了利用大量数据直接就能训练计算机来完成任务的第二代机器学习平台Tensor Flow;剑桥大学建立人工智能研究所等。
名词解释
机器学习
机器学习是Machine Learning,英文简称 ML。一句话就能明白什么是机器学习:机器学习是实现人工智能技术的方法。
机器学习是一门多领域交叉学科,涉及概率论、统计学、算法理论等多门学科。
这里需要强调一下,机器学习可不是一门编程语言哦,它是专门研究计算机怎样模拟或实现人类的学习行为、以获取新的知识或技能,让计算机重新组织已有的知识结构使之不断改善自身的性能。
举一个例子看看机器学习是什么。例如这里有上百万张图片,需要分出哪些图片包含小狗、哪些图片没有小狗。如果人类通过眼睛来分,那岂不是要累惨了,可以通过机器来帮忙。机器学习就是构建出一个模型,该模型经过特殊的训练后,可以将图片标记为包含狗或不包含狗。一旦准确度达到足够高,机器就“学会”了分辨狗的样子。这个过程就是机器学习。
机器学习主要是提供一个算法、训练出一个模型,该模型实现特殊的功能。
- 有监督学习:需要从有标签的数据中学到或者建立一个模式。
- 无监督学习:数据是无标签的,机器学习算法需要先将数据分类,然后对数据结构进行描述,使复杂的数据看起来简单,以便进行后续分析工作。
- 强化学习:与监督学习相似,通过不断地探索学习,从而获得一个好的策略。
常用算法:
- Find-S
- 决策树
- 随机森林算法
- 神经网络
深度学习
机器学习发展发展,就出现了很多新的方法,例如深度学习,DeepLearning,简称DL。
深度学习是机器学习的众多方法之一。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
深度学习的灵感完全来自我们人类本身,来自大脑的结构和功能,即许多神经元的互连互通。人工神经网络是模拟生物大脑结构的算法来训练模型的。
深度学习的概念由Hinton等人于2006年提出。深度学习的提出,为人工智能的发展带来了质的飞跃。带来了意想不到的效果。
深度学习是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。“深度学习”中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。数据模型中包含多少层,这被称为模型的深度(depth)。
基于神经网络的复杂算法:
- 感知机和多层感知机。
- 卷积神经网络(CNN):图像处理。
- 循环神经网络(RNN)和 Transformer:处理序列数据和语言。
机器学习与深度学习区别
机器学习更多关注解决现实世界的问题,与人工智能技术有异曲同工之妙。深度学习则是通过模拟人类决策能力的神经网络找出问题解决方法。深度学习可看作是特殊的机器学习,我们可以利用深度学习来解决任何需要思考的问题。
1、数据依赖
当数据量很少的时候,深度学习的性能并不好,因为深度学习算法需要大量数据才能很好理解其中蕴含的模式。
2、硬件支持
深度学习算法严重依赖高端机,而传统的机器学习算法在低端机上就能运行。深度学习需要GPUs进行大量的矩阵乘法运算。
3、特征工程
特征工程就是将领域知识输入特征提取器,降低数据复杂度。从时间和专业性来讲,这个过程开销很高。
4、执行时间
由于深度学习中含有非常多的参数,较机器学习而言会耗费更多的时间。机器学习在训练数据的时候费时较少,同时只需几秒到几小时。
5、可解释性
假设我们适用深度学习去自动为文章评分。深度学习可以达到接近人的标准,这是相当惊人的性能表现。但是这仍然有个问题。深度学习算法不会告诉你为什么它会给出这个分数。当然,在数学的角度上,你可以找出来哪一个深度神经网络节点被激活了。但是我们不知道神经元应该是什么模型,我们也不知道这些神经单元层要共同做什么。所以无法解释结果是如何产生的。另一方面,为了解释为什么算法这样选择,像决策树(decision trees)这样机器学习算法给出了明确的规则,所以解释决策背后的推理是很容易的。因此,决策树和线性/逻辑回归这样的算法主要用于工业上的可解释性。
消融实验
消融实验类似于之前学习实验方法中的控制变量法
在一个实验中,涉及到a,b,c三个部分,不知道那个部分对实验起到效果,如果想知道a部分对整个实验的作用,去掉a部分,从而知道a在实验中起到的效果。
专家系统
专家系统是一种模拟人类专家解决领域问题的计算机程序系统。
检测分割
人工智能中的图像处理,通常有两种方法可以用于此:目标检测(Object Detection)和图像分割(Image Segmentation)。
目标检测:
YOLO模型(You Only Look Once)是解决此问题的伟大发明。 YOLO模型的开发人员已经构建了一个神经网络,该神经网络能够立即执行整个边界框方法
图像分割:
当下图像分割的最佳模型
Mask RCNN
Unet
Segnet
领域技术
- 自然语言处理:BERT、GPT(语言生成与理解)。
- 计算机视觉:YOLO、OpenCV(图像目标检测)。
- 强化学习:AlphaGo、自动驾驶。
模型是什么
模型是机器学习和人工智能中的核心概念,是一种数学函数或算法,它根据输入数据生成对应的输出结果。模型的目的是通过对已有数据的学习,建立输入与输出之间的关系,进而对新的数据做出预测或分类。
模型由以下几个部分组成:
- 结构(Architecture):定义模型的数学结构和层次,例如线性回归模型的线性方程,神经网络模型的多层感知器。
- 参数(Parameters):模型的“记忆”,比如权重和偏置,训练过程中不断调整以更好地拟合数据。
- 超参数(Hyperparameters):用户定义的参数,比如学习率、批次大小和隐藏层数量,控制模型的训练过程。
模型的核心原理是利用数据建立输入和输出之间的映射关系。常见模型类型有以下几种:
AI 开发流程
- 定义目标和选择算法
- 明确任务类型:先定义模型要解决的问题,是分类、回归、序列预测还是生成任务?例如,情感分析属于分类问题。
- 选择合适的算法:根据任务选择合适的算法,如神经网络(CNN、RNN、Transformer 等)、传统的机器学习算法(KNN、SVM 等)或集成学习(如 XGBoost)。
- 准备数据集
- 收集数据:获取大量与任务相关的高质量数据。数据越多,模型越容易在广泛情况中泛化。比如情感分析可以收集社交媒体评论。
- 数据清理:清洗和过滤数据,去除噪音、不完整或重复数据。处理空值、纠正错误信息。
- 数据标注:对于有监督学习任务,确保数据带有正确标签。无监督任务则不需标签,但需保证数据质量。
- 数据集划分:将数据分为训练集、验证集和测试集,通常按 80%/10%/10% 或 70%/15%/15% 比例分配。
- 数据预处理
- 特征工程:根据任务特点提取重要特征。例如,文本任务中,常用词袋(Bag of Words)或 TF-IDF 方法,将文本转成模型可读的数值特征。
- 数据标准化:将数值特征标准化或归一化。对于图像,通常缩放至 [0,1] 范围。
- 文本数据的词向量化:如果处理的是文本任务,可以用 Word2Vec、GloVe 或 BERT 来将词语转换成词向量。
- 模型选择和定义
- 使用框架(如 TensorFlow 或 PyTorch)来搭建和定义模型架构。对于文本分类,可以使用双向LSTM、Transformer 或 BERT 等。
- 模型设计时要注意输入、隐藏层、输出的设计,权衡计算量和模型能力,避免过拟合或欠拟合。
- 训练模型
- 定义损失函数:例如分类任务可用交叉熵损失,回归任务用均方误差损失。
- 选择优化器:如 Adam、SGD 等,用于更新权重。
- 训练过程:使用训练集输入模型,计算损失,并通过反向传播更新权重,逐步提升模型性能。
- 调节超参数:如学习率、批次大小、层数、神经元数量等,可以通过网格搜索或随机搜索优化。
示例训练代码(假设用 PyTorch 和文本数据):
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
# 假设已定义 DataLoader `train_loader`
model = MyModel() # 你的模型类
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练循环
for epoch in range(num_epochs):
for inputs, labels in train_loader:
outputs = model(inputs)
loss = criterion(outputs, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}")
- 验证模型
- 验证集调优:使用验证集评估模型,调整超参数或结构提高精度,避免过拟合。
- 评价指标:如准确率(accuracy)、精确率(precision)、召回率(recall)、F1-score,依据任务选合适的指标。
- 测试和部署
- 测试集评估:最终用测试集检验模型性能,确保泛化能力。
- 保存模型:保存为适用格式(如 .pt 或 .h5),方便后续加载。
- 部署:将模型集成到后端服务中,可以使用 Flask 或 Django 提供 API,也可以通过 TensorFlow.js 部署至前端浏览器。
示例保存模型代码:
torch.save(model.state_dict(), "my_model.pth")
- 监控和更新模型
- 观察模型在真实环境中的表现,并根据新数据持续更新模型,以保持模型的稳定性和准确性。
常见的模型格式
格式 | 描述 | 常见框架 |
---|---|---|
.h5 | HDF5 格式,用于存储 Keras/TensorFlow 的模型及其参数。 | TensorFlow, Keras |
.pt / .pth | PyTorch 的模型格式,存储模型的权重或完整结构。 | PyTorch |
.onnx | Open Neural Network Exchange,跨框架的标准化格式,可用于迁移到不同平台。 | 多框架通用 |
.tflite | TensorFlow Lite 格式,用于移动设备和嵌入式设备的优化模型。 | TensorFlow |
.pb | Protocol Buffer 格式,存储 TensorFlow 的图定义和参数。 | TensorFlow |
.joblib / .pkl | 用于保存传统机器学习模型的序列化文件,如 scikit-learn 的模型。 | scikit-learn |
.bin | 通常用于自然语言处理模型(如 Hugging Face 的 Transformer 模型)。 | Hugging Face, BERT |