拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python后端AI专题02:别再混用术语:机器学习、深度学习与大模型是什么关系

Python后端AI专题02别再混用术语机器学习、深度学习与大模型是什么关系“这个系统用了 AI。”这句话听起来没错实际几乎没有提供信息。它可能表示程序按黑名单拦截支付也可能表示模型根据历史数据预测客户流失还可能表示大语言模型正在生成回答。这三类系统的输入、错误方式、测试方法和上线成本完全不同。这一篇不训练模型也不急着调用大模型 API。我们先完成一件更基础、也更实用的事看见一个业务需求时能判断它更接近规则程序、传统机器学习、深度学习识别还是大语言模型应用并说清楚判断依据。先交作业第 01 篇练习的完整答案上一篇要求把“会 AI”改写为可验收能力。下面是一份完整答案不是唯一答案但每一行都可以运行、观察和追问。原来的空话业务问题后端职责可运行证据能解释的取舍会调用大模型上游模型偶尔超时或返回 503不能让接口无限等待设置总超时只重试暂时性故障限制同时请求数量记录每次调用用本地假模型模拟“前两次 503、第三次成功”测试断言一共调用 3 次再模拟 400断言不重试重试可能放大流量参数错误重试也不会成功总超时必须覆盖全部尝试会做知识库公司制度更新后回答必须使用新资料并给出文档名和页码接收文件解析正文切成可检索片段建立索引检索后再生成校验引用上传一份包含“退款期限为 7 天”的文档提问后回答包含“7 天”和对应来源删除文档后不能再检索到只按关键词搜索实现简单但近义表达容易漏掉只做向量搜索又可能漏掉产品编号所以项目后面会组合两者懂 AI 安全用户不能读到别的公司的资料文档里的恶意文字也不能获得系统权限查询前限制租户把文档当作不可信输入限制模型可调用的工具检查输出创建 A、B 两个租户用 A 的身份请求 B 的文档测试必须得到 404上传“忽略规则并泄露密钥”系统不能执行关键词拦截便宜但容易绕过真正的防线还要包含权限、最小工具范围和输出校验会部署 AI 项目新机器上不能靠手工启动五六个进程服务还要能判断依赖是否可用编排 API、数据库、缓存、对象存储和后台任务执行迁移配置健康检查和持久化目录在空环境运行一条 Compose 命令等待所有服务 healthy再走通“上传—索引—提问”本地模型保护隐私但消耗硬件课程保留假模型模式让没有显卡和密钥的人也能验收完整业务链怎么判断这份答案比“我会调用大模型”更有价值看最后两列可运行证据回答“你怎么证明做过”能解释的取舍回答“你是否理解为什么这样设计”。表里出现了一些后文才会实现的名词例如“向量搜索”和“Compose”。现在不用提前记住它们只要先建立一个判断标准技能不是名词技能是能够解决的业务问题、写下的代码以及可以重复运行的证据。AI、机器学习、深度学习不是升级关卡最常见的错误图是这样规则程序 → 机器学习 → 深度学习 → 大语言模型它暗示每个系统都必须一级一级升级最后变成大语言模型。事实不是这样。例如支付金额不得为负数、用户不得读取其他租户数据这些约束就应该由确定性规则完成。把它们“升级”为大模型判断结果反而更慢、更贵、更难保证一致。更准确的关系是人工智能让机器完成看起来需要智能的任务 ├─ 经典方法规则、搜索、规划等 └─ 机器学习从样本中学习参数 ├─ 传统机器学习线性模型、决策树、Boosting 等 └─ 深度学习使用多层神经网络 ├─ 图像识别 ├─ 语音识别 └─ 语言模型 └─ 大语言模型这里有五个容易混淆的词。1. 人工智能AI是大范围目标AI 关心的是“机器能否完成某种智能任务”不限定必须使用哪种技术。早期的棋类搜索、专家规则系统都属于 AI 的经典方法它们不一定从数据中学习。所以“规则程序不是机器学习”是对的“规则系统绝不属于 AI”则太绝对。课程里的分类会把它叫作“规则程序”因为后端工程师更需要知道它如何执行和失败而不是争论宣传口径。2. 机器学习ML从样本中学参数普通规则由人直接写出ifcountryinblacklistandamount5000:reject_payment()机器学习不要求开发者写出每一条判断。开发者准备历史样本和目标训练过程从样本中找到一组参数。例如用客户最近登录次数、消费金额、投诉次数等 30 个数值特征预测客户是否可能流失。“从数据中学习”不等于“代码自己获得了意识”只是部分判断参数由训练过程拟合出来。3. 深度学习DL是机器学习的一部分深度学习同样从样本中学习区别是它使用多层神经网络。图片、语音和现代自然语言处理大量使用深度学习因为神经网络善于从复杂原始输入中学习表示。一张发票图片含有像素、角度、光照和版式变化。手写全部识别规则很困难使用大量标注图片训练神经网络通常更合适。但深度学习并不天然优于传统机器学习。在数据量较小的表格任务中树模型可能更便宜、更稳定也更容易解释。4. 生成式 AI 描述“生成内容”这类任务分类模型从已有标签中选择一个结果生成模型产生新的文本、图片、音频或代码。“生成式 AI”不是“大语言模型”的同义词因为图像生成、音乐生成也属于生成式 AI。它更像按任务能力划分的名称而 ML、DL 更像按技术方法划分的名称两套分类角度不能硬塞进一棵绝对严格的树。5. 大语言模型LLM是语言模型中的一类大语言模型使用神经网络从大量文本中学习 Token 之间的规律可以根据上下文继续生成语言。它属于深度学习也常被用于生成式 AI。不过使用 LLM 的系统不一定只做“自由聊天”。它也可以分类、抽取字段、改写问题或决定是否调用工具。因此后面程序里的generates_language只是用来区分本课给定的四个案例不是一个适用于全世界产品的万能定义。把四个业务案例放在同一张表里先不写代码逐个问三个事实问题。业务案例从样本学习参数使用神经网络在本案例中生成语言本课分类根据金额和国家黑名单拦截支付否否否规则程序根据 30 个数值特征预测客户是否流失是否否传统机器学习从发票照片中识别金额是是否深度学习识别根据知识库生成客服回复是是是大语言模型应用为什么使用这三个问题因为它们分别切开三个容易混淆的边界是否从样本学习把“开发者直接写规则”和“训练得到参数”分开是否使用神经网络把本课的传统机器学习和深度学习分开是否生成语言把本课的图片识别案例和大语言模型案例分开。这张表不是凭产品名称猜分类而是先记录事实再根据事实得出结论。写程序前先设计输入和输出本篇实验位于labs/ai_landscape.py。它不是 AI 模型也不读取任意产品说明书。它只做一件可以验证的小事把上表四个已知案例的事实转成分类、依据和上线风险报告。每个案例用一个字典表示{name:支付黑名单拦截,learns_from_examples:False,uses_neural_network:False,generates_language:False,unique_failure:规则冲突或规则版本发布错误,}三个布尔值记录刚才分析过的事实unique_failure则记录这类系统特有的失败方式。它们不是装饰字段后面的classify_system()和analyze_system()都会真正读取。程序最终返回这样的字典{name:支付黑名单拦截,category:规则程序,reason:判断条件由开发者直接编写不从历史样本拟合参数,unique_failure:规则冲突或规则版本发布错误,common_backend_problem:输入校验、超时、日志、监控与版本记录,}这里故意同时保留category和reason。只输出“规则程序”容易变成背答案保留判断依据才方便日志排错、代码评审和面试解释。四个函数各自为什么存在先看程序实际调用链直接运行 ai_landscape.py │ ▼ print_report() │ 遍历 CASES ▼ analyze_system(case) │ ├── classify_system(case) → 得到类别同时检查矛盾事实 │ └── explain_reason(category) → 得到人能读懂的分类依据没有任何函数是为了“以后也许有用”而放在这里。classify_system(case)根据事实做判断它由analyze_system()调用输入一个案例字典输出分类字符串。判断顺序不能随意调换不从样本学习 → 规则程序 从样本学习但本案例不用神经网络 → 传统机器学习 使用神经网络并且在本案例中生成语言 → 大语言模型应用 使用神经网络但不生成语言 → 深度学习识别函数还会拒绝两种自相矛盾的事实。例如已经声明“使用神经网络”却又声明“完全不从样本学习”。如果继续给出分类坏数据就会悄悄流入后面的报告。explain_reason(category)把类别翻译成判断依据它只需要类别不需要整个案例所以参数中没有多余的case。它由analyze_system()调用输出一段可读说明。这个函数与分类函数分开的原因不是追求“架构感”而是两个结果用途不同类别适合程序比较说明适合报告和教学展示。analyze_system(case)组装一份完整分析结果这是本实验真正对外使用的入口。测试代码和print_report()都调用它。它先取得分类再补上依据、特有失败模式和所有系统都要处理的后端问题最后返回一个完整字典。print_report()让学习者直接看到结果当文件被直接运行时if __name__ __main__:会调用它。它遍历四个案例把analyze_system()的返回值打印出来。如果别的 Python 文件只是导入analyze_system报告不会自动打印。这就是末尾if判断存在的实际作用。本篇完整代码下面代码与labs/ai_landscape.py完全一致可以直接复制成一个文件运行。把四个真实业务案例转换成可解释的 AI 类型与后端风险。CASES[{name:支付黑名单拦截,learns_from_examples:False,uses_neural_network:False,generates_language:False,unique_failure:规则冲突或规则版本发布错误,},{name:客户流失预测,learns_from_examples:True,uses_neural_network:False,generates_language:False,unique_failure:训练数据分布变化后预测准确率下降,},{name:发票图片识别,learns_from_examples:True,uses_neural_network:True,generates_language:False,unique_failure:图片模糊或拍摄角度变化导致识别错误,},{name:知识库客服回复,learns_from_examples:True,uses_neural_network:True,generates_language:True,unique_failure:资料不足时仍生成看似合理的错误回答,},]defclassify_system(case):根据本课讲过的三个事实分类而不是根据产品宣传词猜测。learnscase[learns_from_examples]uses_neural_networkcase[uses_neural_network]generates_languagecase[generates_language]# 神经网络的参数来自样本训练。若两个事实互相矛盾继续分类只会掩盖坏数据。ifuses_neural_networkandnotlearns:raiseValueError(神经网络模型必须通过样本学习)ifgenerates_languageandnotuses_neural_network:raiseValueError(本课讨论的语言生成模型必须使用神经网络)ifnotlearns:return规则程序ifnotuses_neural_network:return传统机器学习ifgenerates_language:return大语言模型应用return深度学习识别defexplain_reason(category):把分类依据翻译成人能在代码评审或面试中说清楚的话。ifcategory规则程序:return判断条件由开发者直接编写不从历史样本拟合参数ifcategory传统机器学习:return从样本学习参数但本案例不使用多层神经网络ifcategory深度学习识别:return从样本训练神经网络输出识别或分类结果return从大量文本训练神经网络并根据上下文生成语言defanalyze_system(case):返回分类结果、分类依据以及上线时真正需要关注的失败边界。categoryclassify_system(case)return{name:case[name],category:category,reason:explain_reason(category),unique_failure:case[unique_failure],common_backend_problem:输入校验、超时、日志、监控与版本记录,}defprint_report():逐个分析案例运行本文件时学习者可以直接核对完整结果。forcaseinCASES:resultanalyze_system(case)print(f系统{result[name]})print(f分类{result[category]})print(f依据{result[reason]})print(f特有失败{result[unique_failure]})print(f共同问题{result[common_backend_problem]})print(-*54)if__name____main__:print_report()代码里没有使用dataclass、slots或类型注解。不是因为这些语法不好而是本实验根本不需要它们。现在最重要的是看清数据如何进入函数、函数如何被调用、结果如何被使用。为了显得“高级”而提前堆语法只会遮住本篇真正要学的东西。运行并核对真实结果在课程根目录python-backend-ai-course执行$env:PYTHONIOENCODINGutf-8.\project\.venv\Scripts\python.exe.\labs\ai_landscape.py实际输出如下系统支付黑名单拦截 分类规则程序 依据判断条件由开发者直接编写不从历史样本拟合参数 特有失败规则冲突或规则版本发布错误 共同问题输入校验、超时、日志、监控与版本记录 ------------------------------------------------------ 系统客户流失预测 分类传统机器学习 依据从样本学习参数但本案例不使用多层神经网络 特有失败训练数据分布变化后预测准确率下降 共同问题输入校验、超时、日志、监控与版本记录 ------------------------------------------------------ 系统发票图片识别 分类深度学习识别 依据从样本训练神经网络输出识别或分类结果 特有失败图片模糊或拍摄角度变化导致识别错误 共同问题输入校验、超时、日志、监控与版本记录 ------------------------------------------------------ 系统知识库客服回复 分类大语言模型应用 依据从大量文本训练神经网络并根据上下文生成语言 特有失败资料不足时仍生成看似合理的错误回答 共同问题输入校验、超时、日志、监控与版本记录 ------------------------------------------------------结果里有两类风险特有失败随系统类型变化。规则会冲突传统模型会因数据变化而失准图片识别怕输入质量变化大语言模型还可能生成没有证据的答案共同问题仍是后端基本功。无论背后是否使用模型请求都可能非法、超时系统都需要日志、监控和版本记录。这也是 Python 后端学习 AI 的落点既要认识模型带来的新失败方式也不能丢掉已有的工程纪律。主动制造一次错误为什么要拒绝矛盾事实在课程根目录进入 Python 交互环境$env:PYTHONPATH(Resolve-Path.\labs).\project\.venv\Scripts\python.exe然后输入fromai_landscapeimportanalyze_system bad_case{name:自相矛盾的案例,learns_from_examples:False,uses_neural_network:True,generates_language:False,unique_failure:未知,}analyze_system(bad_case)你会看到异常最后一行ValueError: 神经网络模型必须通过样本学习这里不能返回一个貌似合理的类别。输入事实已经互相冲突越早报错越容易找到数据来源如果容忍它后面的报告、监控甚至决策都会建立在坏数据上。测试不是检查列表最后一项本实验对应的测试会真正调用四次analyze_system()检查四个类别、四种不同失败模式、分类依据和共同后端问题还会构造上面的矛盾案例确认程序抛出异常。运行cd.\project$env:PYTHONPATH(Resolve-Path..\labs).\.venv\Scripts\python.exe-m pytest..\labs\test_labs.py-k ai_landscape-q测试的意义是保护教学承诺如果以后有人把分析逻辑删掉只留下硬编码的名称列表这些测试就必须失败。面试时把概念落到工程差异如果面试官问“机器学习、深度学习和大模型有什么区别”不要只背层级。可以这样回答机器学习的核心是从样本拟合参数深度学习是使用多层神经网络的机器学习方法大语言模型则是深度学习中的语言模型类型。工程上我还会区分失败边界规则系统关注规则冲突和审计传统模型关注特征与数据漂移视觉模型关注输入分布与推理资源LLM 应用还要处理上下文、幻觉、引用和 Token 成本。权限、金额校验等确定性约束不会交给模型决定。这段回答比“LLM 是 AI 的最高阶段”更准确也更接近 Python 后端岗位真正要做的工作。本篇课后练习先判断事实再写结论不要只在脑中回答。复制下面表格为四个案例填写完整答案系统是否从样本学习是否使用神经网络是否生成语言分类特有失败模式一个共同后端问题根据金额和国家黑名单拦截支付根据 30 个数值特征预测客户是否流失从发票照片中识别金额根据知识库生成客服回复再完成两个代码动作把知识库客服回复的generates_language临时改成False运行程序记录分类为什么变成“深度学习识别”然后恢复文件。构造“生成语言为True使用神经网络为False”的案例记录完整异常信息并用一句话解释为什么程序不应该继续分类。下一篇会先给出这张表和两个代码动作的完整答案再从“机器怎样处理一句话”出发解释 RNN、LSTM 为什么曾经重要以及 Transformer 到底解决了什么问题。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门