框架和工具
Matlab
Matlab 即 matrix&laboratory,是一个数学软件(平台),而非一种语言或框架。其拥有自己的语法,基本数据单位是矩阵,专用于数值分析、矩阵计算、科学数据可视化、数学建模等
Octave
模仿 Matlab 设计免费开源软件,相比 Matlab 更轻量,且语法和 Matlab 兼容。
深度学习框架(配合Python/C/C++)
本质上都是函数库,对比可参考大佬对三个框架的demo
- 飞桨(PaddlePaddle)是百度的深度学习框架,入门较简单
- tensorflow 是谷歌开源并维护的深度学习框架,入门较困难,部署更方便,适合工业
- PyTorch 是Facebook开发的深度学习框架,训练更方便,适合研究
- Caffe
- mxnet
- Keras
常用标注软件
- LabelImg 目标检测
- LabelMe 目标检测、图像分割
- CVAT 图像分割
GPU
GPU的计算能力比CPU更强,适合做复杂的逻辑运算。卷积神经网络在训练和测试时需要大量的计算,使用GPU效率会更高,可能会有几百倍的差距。
建议使用 nvidia 而非 AMD 的GPU,因为很多深度学习框架是基于 nvidia 开发的
GPU本身也提供了加速能力,如 nvidia 的 TensorRT,通常先把其他框架转成 Onnx(作为转化中介的通用格式),再转成 TensorRT。
OpenCV
本身是个图像库,但也具有一些图像处理方面的深度学习内容
人工智能的历史
- 人工智能之父:图灵
提出了图灵机、图灵测试等概念 - 专家系统
假人工智能,基于人工定义规则解决特定问题 - 机器学习
通过学习数据E,在没有明确设置规则的情况下使机器提高完成任务T的能力P,并推广到未来新的数据上做出判断或预测。
相比专家系统更方便处理一些难以设置规则的复杂场景,如下棋AI、兴趣推荐、自动驾驶、CV(Computer Vision,包括图像识别、图像追踪、图像处理)、Natural Language Processing(NLP,自然语言处理)等领域 - 人工神经网络(深度学习)
弱人工智能,通常具有几千或几万个神经元(远小于人脑的几十亿)
其计算过程是黑盒,没有明确的规则。
通过对数据学习,获得预测和判断能力。
初级神经网络->浅层神经网络->深层神经网络->卷积神经网络,神经元逐步增多
近年来由于训练数据增多(手机、网络等的普及),GPU等硬件计算力变强(支持更多的神经层和参数),算法的创新优化,让深度学习快速发展
机器学习
机器学习是人工智能的核心领域,是实现人工智能的方法。
讨论 “机器是否会思考” 就像说 “潜艇是否会游泳”,机器学习的智能不等于计算机拥有自我意识(弱人工智能)。
特征
机器学习的本质是从样本数据中找出一个公式来解决特定问题,通常人工提取特征值(即对问题结果有影响的属性)。选择高质量的特征可以让结果事半功倍。
通常将一个事物的特征值组成一个 特征向量(feature vector),如鸢尾花长1.1,宽0.1,则其特征向量为 (1.1,0.1)。在坐标系中,该点称为 特征点,两特征点之间的距离称为 特征距离,用于衡量其相似程度。
机器学习的主要类型
-
无监督学习:
训练集数据的目标变量不标记正确值,让机器自己找出数据中的规律或进行分类(未事先人工定义类别)。- 如通过聚类算法(clustering algorithm)自动对人群分类等。
聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类 - 通过鸡尾酒会算法(cocktail party algorithm)分离嘈杂环境中不同来源的声音。
- 如通过聚类算法(clustering algorithm)自动对人群分类等。
-
有监督学习:
训练集数据的目标变量有标记正确值,在训练中参考比对,改进模型,最终给出更多的正确值
根据待预测目标是连续还是离散,分为回归(Regression,如房价、股票价格)和分类(Classification,如是否为垃圾邮件,股价涨跌)问题。(注意分类不同于聚类,是在已有分类标准下,对新数据进行划分) -
半监督学习(semi-supervised learning):
介于无监督学习和有监督学习之间,为小部分样本提供正确值 -
强化学习:
在行动中学习,最终获得一个策略(policy)。
训练过程中,从一个初始策略开始,根据每一步行动和环境交互得到的反馈(回报或惩罚),不断地调整策略(无人驾驶、下棋、自动交易)。
不同于监督学习,强化学习收到的反馈是评估性的而非指导性的,反馈只告知好坏而不告知正确答案。 -
深度学习:
机器学习的关系
在普通机器学习的基础上,结合了人工神经网络来解释数据,例如图像,声音和文本等,让机器自己掌握学习能力。
如生成对抗网络(generative adversarial network,GAN)为深度学习+无监督学习,可用于自动绘图。
数据集
训练数据集(Training Set):
从原始数据集中分离出来的大量数据,喂给模型用来训练模型。
验证数据集(Validation Set):
从原始数据集中分离出来的少量数据,用来给训练集训练结束后的模型进行模型的精度评估。
测试数据集(Test Set):
从原始数据集中分离出来的少量数据,用来给训练集训练结束后的模型进行模型的精度评估。其作用和验证集一致,一般是在深度学习的模型中和验证集区别对待,在统计学习模型中一般不单独分离出测试集。
- 建议划分比例:
按训练集:验证集:测试集=7:2:1
按训练集:验证集=8:2(此时不划分测试集)
当然当数据量很大的时候(上百万数据量级别)也有按训练集:验证集=98:2的比例划分。
有监督学习的基本原理
机器学习算法库用于从样本数据中计算出各个属性的权重,使偏离值(代价,cost)尽量小,产生一个可以拟合各个样本数据的函数表达式(称为多元线性回归)。
AI模型训练基本流程
- 分析需求
- 收集数据
- 标注数据
- 训练模型
将数据按照8:2的比例分成训练集和测试集
根据测试集预测结果的偏差调参,最终完成训练 - 部署并应用模型
网友评论