一文读懂 AI

  • 2022年11月30日,OpenAI发布了ChatGPT,2023年3月15日,GPT-4引发全球轰动,让世界上很多人认识了ai这个词。如今已过去快两年半,AI产品层出不穷,如GPT-4、DeepSeek、Cursor、自动驾驶等,但很多人仍对AI知之甚少,尤其是“NLP”,“大模型”、“机器学习”和“深度学习”等术语让人困惑🤔。
  • 对于普通人来说,AI是否会取代工作😨?网络上说除双一流以外学校搞不了AI又是什么情况😩?AI产业是否像以前一样互联网程序员一样?看一些科普视频,上来就是一顿“Attention”、“神经元”、“涌现现象”等术语,让人感觉是在介绍AI某个领域中的一个名词,本文将通俗易懂地解释AI,让什么都不懂的小白也能变成AI概念的糕手,糕手,糕糕手😎

一:区分AI技术与AI应用

image-20250412213505504

神经网络是机器学习的一部分,这里作例子
  • AI 的应用有:自然语言处理(NLP)、计算机视觉、自动驾驶、语音识别等。而机器学习、大语言模型等是实现这些应用的技术手段。

  • AI 的应用 就像是 餐馆的菜单,上面有不同的菜肴(如自然语言处理、计算机视觉等),这些菜肴是顾客需要的服务或产品。

    而 **机器学习、大模型就像是 厨师的烹饪方法和工具,它们是实现这些菜肴所用的手段。**你可以用机器来完成 NLP 任务,也可以用神经网做。

二:ChatGPT、DeepSeek是什么东西?

  • 我们已经知道AI有不同的应用,而ChatGPT与DeepSeek都是NLP领域的大型语言模型(Large Language Model, LLM)。(NLP中文意思:自然语言处理。不要忘了哦)

  • 这又引出了新问题:NLP是什么?大型语言模型又是什么?

NLP是什么?

  • 翻译人类语言让计算机听懂就是NLP,其中重点是听懂,而不是你说“吃饭了嘛”,计算机也说“吃饭了嘛”。计算机明白了你在问它吃没吃饭,于是计算机回答:我是机器不需要吃饭😅,或者我打算过一会儿再吃(充电)🔋。

    很难想象,没思想的计算机怎么能听懂有思想的人说的话🤔,这其实是个困扰了几十年的问题。

阶段时间范围技术特点代表方法/模型应用举例
规则驱动阶段1950s–1980s基于人工编写规则,语言学为主句法规则、词典匹配早期机器翻译、图灵测试
统计学习阶段1990s–2010依赖大规模语料,采用统计与概率模型N-gram、HMM、CRF情感分析、搜索引擎、拼写纠正
神经网络阶段2010–2017引入深度学习,提升语言理解建模能力Word2Vec、RNN、LSTM、Seq2Seq智能问答、语音识别
预训练大模型阶段2018至今采用Transformer架构,模型参数大规模增长BERT、GPT、T5、ChatGPT、DeepSeek等多任务通用语言处理、对话系统
上面这表AI做的,时间范围可能有问题,但阶段没问题
  • 规则驱动阶段:意思就是让机器明白主谓宾定状补、什么名词动词名词短语……但很显然,套一万个规则也难以让一台只会010101的机器明白你在说什么。

  • 统计学习阶段:这时候,科学家们将统计学引入来解决问题。将人们日常对话收集成库(语料库),通过统计发现对话数据中的规律来实现计算机“理解”人说的话。

    • 在第三小结,会构建一个简单的N-Gram模型,让你大概知道什么是模型与统计学习阶段是在干什么。所以先别急。
  • 神经网络阶段:科学家们发现统计效果很好后,扩大了语料库,加入了矩阵、向量计算(这不是本文重点,但可以是下一篇)和人工设计特征(早期有,后期减少),计算机硬件发展为该阶段的提供算力支持。

  • 预训练大模型阶段

    • 先说大模型,大模型就是有参数量大(亿级甚至千亿级)、数据量大、算力需求高特点的神经网络模型。
    • 预训练:就像是一个体育比赛的人,不管这个人参与什么体育项目,先把体能练好了,再训练具体项目。
阶段目的数据类型示例任务
预训练学通用语言能力无标注语料预测遮盖词、下一个词等
微调学任务特定能力有标注数据分类、翻译、问答等

image-20250413162855671

大型语言模型是什么?

  • 你应该已经知道了,大型语言模型是一种大模型。

三:一个基础NLP模型实现:N-Gram模型

  • -Gram 模型是一种基于统计的语言模型,其核心思想是:一个词(或字)出现的概率,只依赖于它前面的 n−1n-1n−1 个词(或字),用来解决已知的上下文生成合理的文本问题。

  • 工作原理:

    • 将文本序列拆分为连续的 N 个词(或字)的组合,称为“N-Gram”。
    • 通过统计语料中各个 N-Gram 出现的频率,估计下一个词(或字)出现的概率。
  • 计算公式

    • image-20250413174639644
  • 模型流程

    • 收集语料
    • 切分为 N-Gram
    • 统计每种 N-Gram 出现频率
    • 根据频率计算概率
    • 根据历史词语预测下一个词
from collections import defaultdict, Counter
import random
# 第一步:创建语料库
corpus = ["我早上去了图书馆","我早上听了一节英语课","我中午看了一部电影","我中午睡了一会儿","我晚上写了一篇作文","我晚上复习了功课",
]# 第二步:分词函数(按字分词,这里只是按照字符分词)
def split_words(text):return [char for char in text]# 第三步:统计Bigram词频(Bigram 是一个N-Gram 模型中的特例,其中N=2,即考虑连续的两个词或字符的组合。) 
bigram_freq = defaultdict(Counter)
for sentence in corpus:words = split_words(sentence)for i in range(len(words) - 1):first, second = words[i], words[i+1]bigram_freq[first][second] += 1
# 打印词频率
# print("打印词频率")
# for first, counter in bigram_freq.items():
#     freq_list = [f"{second}:{freq}" for second, freq in counter.items()]
#     print(f"{first}: [{', '.join(freq_list)}]")# 第四步:计算Bigram概率(转为概率分布)
bigram_prob = {}
for first, counter in bigram_freq.items():total = sum(counter.values())bigram_prob[first] = {second: count / total for second, count in counter.items()}
# print("词频概率为:", bigram_prob)# 第五步:根据前缀生成下一个字
def predict_next_char(prev_char):if prev_char not in bigram_prob:return Nonecandidates = list(bigram_prob[prev_char].items())chars, probs = zip(*candidates)return random.choices(chars, probs)[0]# 第六步:输入前缀,生成文本
def generate_text(start_char, length=10):result = [start_char]current = start_charfor _ in range(length - 1):next_char = predict_next_char(current)if not next_char:breakresult.append(next_char)current = next_charreturn ''.join(result)# 示例
print(generate_text("我"))
  • 代码不难,不懂问AI就好了。
  • https://github.com/Qiuner/HelloAI ,这里会陆续复现几个ai发展的经典模型
    image-20250413173945647
每个词后面出现词次数

image-20250413174052485

出现词次数转化为概率与给定一个词后生成的连续文本
  • 可以看到,出现了我早晨去了功课这样不存在词库的句子
  • 实际要做的更多

尾与推荐

  • N-Gram模型是不是让你觉得非常简单?简单就对了,**这是1913年提出的模型,在1950年被引入NLP。**而现在是2025年,AI已经过Word2Vec 、RNN、 HMM、Transformer、BERT、GPT……等模型,且上面这些只是AI中NLP领域的。

  • 推荐:

  • 本文的一些术语并列,因根据我日常看到的词频率而并列,可能其并非并列关系。

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列
  • 📝 一文读懂系列
  • 🌟 持续更新
  • 🎯 人生经验

掘金账号 CSDN账号

感谢订阅专栏 三连文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】检查RDMA网卡状态和测试带宽 | 附测试脚本

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 检查硬件和驱动状态 测试RDMA通信 报错修复 对于交换机的配置,可以看这篇: 【教程】详解配置多台主机通过交换机实现互…

计算机网络 - TCP协议

通过一些问题来讨论 TCP 协议 什么是 TCP ?举几个应用了 TCP 协议的例子TCP协议如何保证可靠性?tcp如何保证不会接受重复的报文?Tcp粘包拆包问题了解吗?介绍一下,如何解决?TCP拥塞控制与流量控制区别&…

Fiddler 进行断点测试:调试网络请求

目录 一、什么是断点测试? 二、Fiddler 的断点功能 三、如何在 Fiddler 中设置断点? 步骤 1:启动 Fiddler 步骤 2:启用断点 步骤 3:捕获请求 步骤 4:修改请求或响应 四、案例:模拟登录失…

OpenCv高阶(三)——图像的直方图、图像直方图的均衡化

目录 一、直方图 1、计算并显示直方图 2、使用matplotlib方法绘制直方图(不划分小的子区间) 3、使用opencv的方法绘制直方图 (划分16个小的子亮度区间) 4、绘制彩色图像的直方图,将各个通道的直方图值都画出来 二、…

Flutter 与原生通信

Flutter 与原生之间的通信主要基于通道机制,包括 MethodChannel、EventChannel 和 BasicMessageChannel。 MethodChannel:用于 Flutter 与原生之间的方法调用,实现双向通信,适合一次性的方法调用并获取返回值,如 Flut…

前端面试-Vue篇

核心概念 Vue 3的响应式原理与Vue 2有何本质区别?Vue中虚拟DOM的diff算法优化策略有哪些?Vue组件间通信方式有哪些?适用场景分别是什么?Vue的生命周期钩子在Composition API中如何替代?Vue的模板编译过程是怎样的&…

光刻机研发与市场现状分析报告

1. 引言 光刻机(Lithography Machine)是半导体制造的核心设备,其技术水平和市场供应能力直接影响全球芯片产业的发展。随着人工智能(AI)、5G、高性能计算(HPC)和自动驾驶等技术的兴起&#xff0…

Missashe考研日记-day21

Missashe考研日记-day21 1 专业课408 学习时间:4h学习内容: 今天先把昨天学的内容的课后习题做了,整整75道啊,然后学了OS第二章关于CPU调度部分的内容,这第二章太重要了,以至于每一小节的内容都比较多&am…

【玩转全栈】—— Django+vue3+讯飞星火API 实现前端页面实时AI答复

技术栈:vue3 element-plus axios pinia router Django5 websocket 讯飞星火API 本文将实现一个 AI 聊天对话功能,将前端用户输入问题以及之前对话发送给后端,通过 api 访问大模型,返回前端实时对话数据。 调用 讯飞星火API…

广东广州一家IPO资产重组疑点重重,信息披露真实性存疑

作者:Eric 来源:IPO魔女 4月18日,广州瑞立科密汽车电子股份有限公司(简称“瑞立科密”)将接受深交所主板IPO上会审核。公司保荐机构为中信证券,拟募集资金为15.2162亿元。 瑞立科密过往资产重组疑点重重&a…

银河麒麟(Kylin) - V10 SP1桌面操作系统ARM64编译QT-5.15.12版本

银河麒麟(Kylin) - V10 SP1桌面操作系统ARM64编译QT-5.15.12版本 原因 测试Kylin-Desktop-V10-SP1-General-Release-2303-arm64系统下,编译QT-5.15.12版本已做测试。 测试环境 测试板配置 型号:LM-D2000-NONE-1w-V01-pc_A2150 CPU:飞腾D20…

查看前端项目依赖树型结构关系图的详细方法,涵盖 命令行工具 和 可视化工

以下是查看前端项目依赖树型结构关系图的详细方法&#xff0c;涵盖 命令行工具 和 可视化工具&#xff1a; 一、命令行工具生成依赖树 1. npm # 查看项目依赖树&#xff08;文本形式&#xff09; npm ls# 查看指定包的依赖树 npm ls <package-name># 生成JSON格式的依…

Ollama高并发测试

本文主要来测试一下ollama的高并发能力。 具体配置如下&#xff1a; 一、Ollama默认参数执行 我们打开4个窗口&#xff0c;然后分别让DeepSeek “给我讲一个笑话” &#xff0c;看下不同窗口的答题顺序。 通过答题顺序可以看到&#xff0c;在不进行参数设置时&#xff0c;模…

资源管理与HPA:让Kubernetes应用自动伸缩

引言&#xff1a;从“手动挡”到“自动驾驶” 想象我们驾驶一辆汽车&#xff0c;手动调节油门和换挡不仅费力&#xff0c;还难以应对突发状况。我们的应用服务也一样&#xff0c;在面对突然的流量增长&#xff0c;内存使用暴涨该如何应对。HPA&#xff08;Horizontal Pod Auto…

Windows 下 MongoDB ZIP 版本安装指南

在开发和生产环境中&#xff0c;MongoDB 是一种非常流行的 NoSQL 数据库&#xff0c;以其灵活性和高性能而受到开发者的青睐。对于 Windows 用户来说&#xff0c;MongoDB 提供了多种安装方式&#xff0c;其中 ZIP 版本因其灵活性和轻量级的特点&#xff0c;成为很多开发者的首选…

【Linux网络与网络编程】11.数据链路层mac帧协议ARP协议

前面在介绍网络层时我们提出来过一个问题&#xff1a;主机是怎么把数据交给路由器的&#xff1f;那里我们说这是由数据链路层来做的。 网络上的报文在物理结构上是以mac帧的形式流动的&#xff0c;但在逻辑上是以IP流动的&#xff0c;IP的流动是需要mac帧支持的。 数据链路层解…

多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案

多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案 医疗AI领域的多模态思维链技术正在重塑临床决策支持、医学影像分析和医疗流程优化的范式。本指南从计算可持续性、错误传播控制、伦理安全防护和通用性扩展四大维度,系统解析医疗大模型落地落地的关键要…

代理模式深度解析

目录 一 静态代理 1.1 优点 1.2 缺点 1.3 适用场景 二 JDK动态代理 1 JDK动态代理的工作原理 1.1 创建代理类 1.2 加载代理类 1.3 实现方法调用 2. Proxy.newProxyInstance() 的核心工作流程 方法签名 工作步骤 3. 代理类的生成与加载 3.1 代理类生成的关键方法 …

Spring Cache与Redis集成原理

一、核心架构图解 #mermaid-svg-aiWGQLhmWx7kOfLz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aiWGQLhmWx7kOfLz .error-icon{fill:#552222;}#mermaid-svg-aiWGQLhmWx7kOfLz .error-text{fill:#552222;stroke:#5…

编程技能:调试02,设置断点与删除断点

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;调试01&#xff0c;调试介绍 回到目录 下…