人工智能核心技术有哪些?机器学习、知识图谱与语音交互实战

人工智能核心技术有哪些?机器学习、知识图谱与语音交互实战 简介这份PDF文档围绕「人工智能的核心技术」展开依据《人工智能标准化白皮书2018》的框架面向人工智能入门学习者、备考人员及需要梳理知识体系的从业者解答AI核心技术包含哪些内容这一问题。文档以机器学习为主线逐一讲清监督学习、无监督学习与强化学习三种模式的原理、典型算法与落地场景并对比传统机器学习与深度学习在可解释性、有效性上的差异同时介绍TensorFlow、PyTorch等主流开源框架的定位。内容还延伸至知识图谱的实体—关系—实体结构及其在搜索、反欺诈中的应用以及自然语言处理中的机器翻译等方向并补充迁移学习、主动学习与演化学习的思路。资源为1个PDF文件约318KB篇幅精炼、脉络清晰适合作为概念速查与体系梳理的轻量读物已有220人学习。1. 从《人工智能标准化白皮书2018》看七项核心技术的骨架很多人下载这份《什么是人工智能的核心技术》PDF扫两眼标题就丢进资料堆觉得无非是一份概念科普。真翻进去会发现它其实是把白皮书里那份技术清单拆解开了机器学习、知识图谱、自然语言处理、人机交互、计算机视觉、生物特征识别、虚拟现实/增强现实七块内容边界清楚每块还带着分类判据和关键难点。这份文档资料最有价值的地方不在名词解释而在它给出的分类逻辑——按学习模式切机器学习按抽象层次切图像理解按信息交换方向切人机交互这些切法直接决定了你后面选模型、选框架、定阈值的动作。做 AI 应用的人常犯的错是先挑框架再想问题顺序反了。这份白皮书式的骨架适合两类人一类是要做技术选型、需要一张全景图把散点连成线的人另一类是被各种框架文档绕晕、想先搞清概念边界再去写代码的人。下面按这份文档的七块内容一块块落到能跑的命令和能改的参数上。2. 机器学习三种学习范式与 scikit-learn 最小复现2.1 监督、无监督、强化学习的分界是数据形态而非算法白皮书按学习模式切分机器学习这个切法在工程上很实用。决定用哪一类看的不是你想解决什么问题而是手上有没有标签、能不能和环境反复交互。监督学习要求训练样本的分类标签已知标签精度越高、样本越有代表性模型准确度越高无监督学习不需要人工标注靠未标记数据里的内部结构吃饭强化学习连标准答案都没有只有环境返回的奖赏信号智能体必须靠自身经历去逼近从状态到行为的映射。范式数据要求典型算法主要评估指标常见落地场景监督学习带标注样本逻辑回归、SVM、决策树、KNN准确率、F1、AUC垃圾邮件侦测、文本分类、手写体辨识无监督学习无标注样本KMeans、DBSCAN、PCA、单类密度估计轮廓系数、重构误差异常检测、市场分割、集群调度强化学习可交互环境 奖赏函数Q-Learning、PPO、DQN累计回报、收敛步数机器人控制、下棋、工业控制选型时最容易踩的坑是拿无监督的聚类结果当分类结论直接上线。聚类只能用来说明这批数据里存在结构至于每个簇对应什么业务含义还得回到人工确认那一步。2.2 用 scikit-learn 跑通监督与无监督的最小闭环下面这段代码把两个范式压在同一份数据上便于直观看到有标签和没标签的差别到底有多大。# 监督路径与无监督路径的最小对照实验 import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.cluster import KMeans from sklearn.metrics import classification_report, silhouette_score X, y load_breast_cancer(return_X_yTrue) # y 为已标注的 0/1 标签 # ---- 监督路径 ---- X_tr, X_te, y_tr, y_te train_test_split( X, y, test_size0.2, stratifyy, random_state42) scaler StandardScaler().fit(X_tr) # 只在训练集拟合避免信息泄漏 X_tr_s, X_te_s scaler.transform(X_tr), scaler.transform(X_te) clf LogisticRegression(C1.0, max_iter1000, class_weightbalanced) clf.fit(X_tr_s, y_tr) print(classification_report(y_te, clf.predict(X_te_s), digits3)) # ---- 无监督路径把标签扔掉看簇结构是否还站得住 ---- km KMeans(n_clusters2, n_init10, random_state42).fit(scaler.transform(X)) print(silhouette , round(silhouette_score(scaler.transform(X), km.labels_), 3))几处参数值得记住C是 L2 正则强度的倒数调小等于加重惩罚样本量小的时候先动它max_iter给到 1000 是防止 lbfgs 在未标准化数据上不收敛配合StandardScaler一起用class_weightbalanced在处理正负样本失衡时按类别频率反比加权比手动过采样省事n_init10让 KMeans 换 10 组初始质心取最优避免陷入局部解silhouette_score越接近 1 说明簇内越紧、簇间越远低于 0.3 基本说明这个 k 值没选对。想找合适的 k把n_clusters从 2 扫到 10逐个打印轮廓系数就够了。2.3 传统机器学习与深度学习的边界三层网络这条线白皮书给了一条很好用的判据深度学习指层数超过 3 层的神经网络。按这个口径一个输入层加一个隐层加一个输出层总共 3 层仍然算传统机器学习的范畴一旦堆到两个隐层以上就跨过了那条线。传统机器学习算法清单里的逻辑回归、隐马尔科夫、支持向量机、K 近邻、Adaboost、贝叶斯、决策树共同特点是把特征工程和模型训练分开人负责告诉模型看什么。from sklearn.neural_network import MLPClassifier # 单隐层总共 3 层结构仍在“传统”口径内 shallow MLPClassifier(hidden_layer_sizes(32,), max_iter500, random_state0) # 两个隐层总共 4 层结构越过了白皮书里的 3 层线 deep MLPClassifier(hidden_layer_sizes(64, 32), activationrelu, alpha1e-4, max_iter500, random_state0)hidden_layer_sizes元组的长度就是隐层数量这是控制模型深度的直接旋钮activationrelu在多层结构下比 tanh 收敛更快alpha1e-4是结构变大后必须补上的 L2 惩罚否则小样本上大概率过拟合。深度学习放弃了可解释性去换有效性落到代码里就是你很难说清第 2 个隐层的第 17 个神经元在学什么但它在足够数据上确实比决策树准。数据量低于几千条、又必须给业务方解释每个特征权重的场景老老实实待在三层以内更划算。2.4 迁移学习与主动学习数据不够时的两条退路某个领域拿不到足够的标注数据是实际项目里最常见的卡点。迁移学习的思路是把已训练好的模型参数迁到新模型上用别的领域学到的底层规则做初始化从而减少所需数据量目前在传感器网络定位、文字分类、图像分类这类变量规模有限的场景里用得比较多。主动学习则换个角度不去扩充数据而是用算法查询最有用的未标记样本交给专家标注通过较少的样本拿到高性能模型最常用的选取策略是不确定性准则和差异性准则。# 主动学习的一轮采样挑出模型最没把握的样本送人工标注 import numpy as np from sklearn.linear_model import LogisticRegression def uncertainty_query(model, X_pool, k20): proba model.predict_proba(X_pool) # 二分类下 |p - 0.5| 越小模型越犹豫 margin np.abs(proba[:, 1] - 0.5) return np.argsort(margin)[:k] clf LogisticRegression(max_iter1000).fit(X_labeled, y_labeled) idx uncertainty_query(clf, X_unlabeled, k20) # 把 idx 对应的样本送去标注再合并回训练集重训循环若干轮predict_proba给出的概率越靠近 0.5说明决策边界正好卡在这条样本上标注它能带来的信息增益最大k是每轮标注预算通常控制在总池子的 1% 到 5%太大就退化成随机采样了。注意多分类场景下这套 margin 计算要换成最大概率与次大概率的差值直接沿用二分类写法会挑出一堆毫无区分度的样本。3. 知识图谱三元组与自然语言处理流水线的打通3.1 实体—关系—实体三元组的建模与 Neo4j 落库知识图谱本质是结构化的语义知识库由节点和边组成图数据结构基本单位是实体—关系—实体三元组加上实体自身的属性—值对。每个节点表示现实世界的一个实体每条边是两个实体之间的关系。建图的第一步不是选图数据库而是把schema定死哪些是实体类型哪些是允许的关系类型关系的方向怎么定义。head头实体rel关系tail尾实体属性键值卷积神经网络属于深度学习模型适用数据空间性分布循环神经网络属于深度学习模型适用数据时间性分布知识图谱组成单位三元组结构实体-关系-实体生物特征识别包含虹膜识别理论框架分割/归一化/提取/识别// 先建唯一约束避免同一实体被重复写入 CREATE CONSTRAINT entity_name IF NOT EXISTS FOR (n:Entity) REQUIRE n.name IS UNIQUE; // 用 MERGE 而不是 CREATE重复导入不会产生脏节点 UNWIND $rows AS row MERGE (h:Entity {name: row.head}) MERGE (t:Entity {name: row.tail}) MERGE (h)-[r:REL {type: row.rel}]-(t) SET r.source row.source;CREATE CONSTRAINT必须在数据写入之前执行否则同名实体会被拆成多个节点后面做路径查询时结果直接翻倍MERGE是存在即匹配、不存在才创建这是批量导入时的默认选择配合UNWIND可以把整个 JSON 数组一次性提交比逐条 Cypher 快一到两个数量级。参数$rows从驱动层传入字段名要和建表时的键保持一致。3.2 从 PDF 抽文本到实体识别pdfplumber spaCy白皮书和标准文档大多是双栏排版直接extract_text()会把左右两栏的句子交叉串行抽出来的实体关系全是错的。按 x 坐标切列是成本最低的解法。import pdfplumber import spacy nlp spacy.load(zh_core_web_sm) # 中文实体识别模型 def extract_entities(pdf_path, max_pages20): chunks [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages[:max_pages]: # 双栏排版必须按 x 坐标切列否则句子会串行 left page.crop((0, 0, page.width / 2, page.height)) right page.crop((page.width / 2, 0, page.width, page.height)) chunks.append(left.extract_text() or ) chunks.append(right.extract_text() or ) doc nlp(\n.join(chunks)) return [(ent.text, ent.label_) for ent in doc.ents] for name, label in extract_entities(ai_core_tech.pdf): print(f{name}\t{label})page.crop接收(x0, y0, x1, y1)四个坐标坐标系原点在页面左上角单位是点1 点约等于 1/72 英寸。max_pages是保护性参数扫描版 PDF 文本层为空不设上限会白跑很久。zh_core_web_sm是小模型实体召回一般若领域术语密集把识别结果先落成候选词表再做人工校对比直接上大模型省钱。注意扫描件要先过 OCRpdfplumber 对纯图片页面返回的字符串是空的这一点排查时看输出长度就够。3.3 机器翻译与语义理解统计模型与端到端模型的取舍机器翻译这块文档里区分了两条技术路线。统计机器翻译包含训练和解码两个阶段训练阶段的目标是获得模型参数解码阶段用估计出的参数和既定优化目标求最佳译文中间要经过语料预处理、词对齐、短语抽取、短语概率计算、最大熵调序这一串步骤。基于神经网络的端到端翻译不需要针对双语句子专门设计特征模型直接把源语言词串送进网络用递归或卷积神经网络对句子做表征建模。对比项统计机器翻译神经端到端翻译特征工程需要词对齐、短语表、调序模型无需人工设计特征训练数据依赖大规模平行语料与对齐工具同样依赖平行语料但对齐要求低译文流畅度短语拼接痕迹明显上下文连贯日常口语场景更自然可调试性中间产物可查问题定位容易黑盒出错只能回调数据部署成本CPU 可跑模型小推理需要 GPU 或量化后的小模型文档里提到的语义理解走的是另一条路用神经网络对篇章和问题建模预测答案的起始和终止位置从篇章里抽片段。做智能客服或产品自动问答时这种抽取式方案在答案确实在文档里的前提下精度很高一旦问题需要跨段落推理或者答案本身是生成的就得换成生成式方案代价是可溯源性和幻觉控制难度同时上升。3.4 数据噪声与一致性校验知识图谱最容易翻车的地方文档里点得很直白知识图谱的发展还有很大挑战比如数据的噪声问题——数据本身有错误或者数据存在冗余。这不是理论问题是导入当天就会遇到的。// 找孤立实体只被创建、没进任何关系的脏节点 MATCH (n:Entity) WHERE NOT (n)--() RETURN n.name LIMIT 50; // 找同形不同写的重复候选 MATCH (a:Entity), (b:Entity) WHERE a.name b.name AND replace(a.name, , ) replace(b.name, , ) RETURN a.name, b.name LIMIT 50;第一条查询用NOT (n)--()判断节点没有任何边这类节点通常来自抽取失败或者关系类型不在白名单里被丢弃的部分第二条用去空格后的字符串做粗匹配能捞到卷积神经网络和卷积 神经网络这种写法差异。实践里再加一步规范化函数把全半角、括号、英文缩写统一处理掉重复率能降一个量级。做公共安全领域的反欺诈、组团欺诈分析时噪声节点会直接污染社区发现结果上线前跑一遍这两条校验比事后补救便宜得多。4. 计算机视觉与生物特征识别的端到端推理链路4.1 图像理解三层抽象对应的模型选型文档把图像理解按抽象程度分了三个层次这个分层直接对应不同的模型和算力预算。层次理解对象典型输出常见方案浅层理解边缘、特征点、纹理元素角点坐标、纹理描述子Canny、SIFT、ORB中层理解物体边界、区域与平面分割掩码、区域框分水岭、FCN、U-Net高层理解语义信息类别、框、姿态、文字说明检测/分割/姿态网络 语言头选型时容易犯的错是拿高层模型去干浅层的活只是判断产线上零件有没有装反用边缘检测加模板匹配往往比训一个检测网络稳定得多也不用维护数据集。反过来刷脸支付、智慧安防、图像搜索这类需要高层语义的场景浅层特征完全不够用硬堆传统算子只会把召回率拖到不可接受。4.2 OpenCV ONNX Runtime 的人脸检测与特征比对人脸识别从应用流程看可划分为检测定位、面部特征提取、人脸确认三个过程下面这段代码把后两步串起来。import cv2, numpy as np, onnxruntime as ort sess ort.InferenceSession(arcface.onnx, providers[CPUExecutionProvider]) def embed(img_bgr): 输入 BGR 人脸图返回 L2 归一化后的特征向量 face cv2.resize(img_bgr, (112, 112)) # 1/127.5 缩放 127.5 均值把像素从 [0,255] 映射到 [-1,1] blob cv2.dnn.blobFromImage(face, 1 / 127.5, (112, 112), (127.5, 127.5, 127.5), swapRBTrue) inp sess.get_inputs()[0].name vec sess.run(None, {inp: blob})[0].ravel() return vec / np.linalg.norm(vec) # 归一化后余弦相似度等价于点积 def cosine(a, b): return float(np.dot(a, b)) sim cosine(embed(face_reg), embed(face_query)) print(similarity , round(sim, 4))blobFromImage里的swapRBTrue是因为 OpenCV 读进来是 BGR而模型训练时用的是 RGB这个参数写错的典型症状是相似度整体偏低但排序还算正常非常隐蔽。providers指定推理后端CPU 上跑 112×112 的模型单张在毫秒级批量比对时把providers换成 GPU 执行器收益更明显。阈值的设定取决于任务确认一对一场景下阈值可以放到 0.5 附近辨认一对多场景因为要在库里挑最像的那个阈值必须往上提否则误接受率会随库容量线性上升。文档里也提到人脸识别效果受光照、拍摄角度、图像遮挡、年龄等因素影响约束条件下相对成熟自由条件下还在持续改进所以别指望一套阈值打通所有摄像头。4.3 注册—识别两阶段辨认与确认的工程差别生物特征识别从流程上分注册和识别两个阶段注册阶段采集生物表征信息、预处理、提特征、入库识别阶段用一致的采集方式重新采一遍再和库里特征做比对分析。从任务上分辨认和确认前者是一对多后者是一对一。任务比对方式核心指标阈值取向典型场景确认1:1误拒绝率 FRR偏宽松手机解锁、门禁刷卡辨认1:N误接受率 FAR、Top-K 命中率偏严格走失人员检索、黑名单布控文档里提到的几种模态各有各的工程约束值得记一下指纹识别走数据采集、数据处理预处理、畸变校正、特征提取、分析判别三段虹膜尺寸小且受黑色素遮挡必须在近红外光源下配高分辨率传感器才成像清晰指静脉利用脱氧血红蛋白对特定近红外波段的吸收特性成像属于体内特征稳定性好难点在成像单元声纹识别分前端处理和建模分析两阶段常用模板匹配法和概率模型法步态是远距离复杂场景下唯一可清晰成像的生物特征需要从视频里提取运动特征预处理要求更高。多模态融合时不要简单地对多个分数取平均各模态的量纲和分布不同先做分数归一化再加权效果差别很大。4.4 视频编解码与算力预算视频编解码这块文档列的国际标准有 H.261、H.263、H.264、H.265、M-JPEG 和 MPEG 系列压缩分无损和有损两类无损压缩重构后数据与原始数据完全相同有损压缩重构后有差异但不影响信息理解。# 监控场景1080p25用 H.265 换带宽关键帧间隔压到 2 秒便于回放定位 ffmpeg -i in.mp4 -c:v libx265 -preset medium -crf 28 \ -g 50 -keyint_min 50 -c:a aac -b:a 64k out.mp4-crf 28是恒定质量模式数值越大压缩越狠监控类画面 28 到 32 之间通常够用-g 50配合-keyint_min 50把关键帧间隔固定在 50 帧25fps 下正好 2 秒一个 I 帧回放拖动和抽帧定位都会快很多-preset medium是编码速度和质量的中点实时流场景往veryfast调离线转码可以压到slow。算力预算上解码路数比模型推理更容易被低估一路 1080p H.265 解码在普通 CPU 上就吃掉一个核多路并发时先把解码卡算进去再算推理卡。5. 语音交互四段链路的延迟拆解与压测脚本5.1 采集—识别—语义理解—合成的预算分配语音交互的过程分四部分语音采集完成音频录入、采样及编码语音识别完成语音信息到文本的转化语义理解根据文本完成对应操作语音合成完成文本到声音的转换。文档里把这个链路讲得很干净但落到产品上用户感知的是这四段加起来的总延迟。阶段典型耗时主要影响因素优化手段语音采集2040 ms采样率、音频缓冲长度缩短缓冲用流式上传语音识别150400 ms模型大小、是否流式流式解码、端点检测提前截断语义理解50300 ms意图模型、是否检索外部知识意图分级先走小模型兜底语音合成80250 ms声码器、是否首包优先首包先播边合成边下发端到端能压到 600 ms 以内对话体感就基本自然了超过 1.5 秒用户会开始怀疑没听清而重复说话反而把识别压力放大。这四段里最该先动的是采集缓冲很多项目默认开 200 ms 缓冲光是这一项就吃掉了全部预算的三分之一。5.2 一段可复用的端到端延迟打点脚本import time def timed(stage, fn, *args, **kwargs): 对单个阶段打点返回结果和耗时毫秒 t0 time.perf_counter() out fn(*args, **kwargs) dt (time.perf_counter() - t0) * 1000 print(f{stage:12}{dt:8.1f} ms) return out, dt audio, t_cap timed(capture, record, 1.0, 16000) text, t_asr timed(asr, recognize, audio) intent, t_nlu timed(nlu, parse_intent, text) wav, t_tts timed(tts, synthesize, intent[reply]) print(total:, round(t_cap t_asr t_nlu t_tts, 1), ms)time.perf_counter()是单调时钟不受系统时间调整影响测短间隔比time.time()可靠每次跑三到五轮取中位数单次结果受调度抖动影响会偏大。把asr和tts单独打点是因为这两段通常跨进程甚至跨服务直接在客户端测总时长会发现 P95 比 P50 高出一大截这时候要去看的是首包时间而不是整体时间。5.3 采样率与端点检测这两个参数先定死采集环节最容易被忽略的参数是采样率和端点检测。语音交互的前端采集直接锁 16 kHz、16 bit、单声道后端做重采样和通道合并的成本比前端改一行代码高得多声纹识别对高频细节更敏感采样率低于 8 kHz 时梅尔谱的高频段基本空了识别分数会明显掉。端点检测的静音阈值一般设在 -35 dBFS 到 -45 dBFS 之间阈值太松会把环境噪声当语音送进识别太紧则会切掉用户话尾的轻声字这个参数必须拿真实场景录音调用实验室安静环境调出来的值上线必翻车。体感和脑机这类交互方式对采样率的要求更极端脑电信号的有效成分集中在低频但事件相关电位的时间分辨率要求高采集端通常要 256 Hz 以上并保证时间戳同步否则后续的特征提取和命令输出根本对不齐时间轴。本文还有配套的精品资源点击获取