【ChatGPT】一个凭借两百多年历史的公式崛起的巨星

news2024/12/27 10:16:23

在这里插入图片描述

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要: ChatGPT的胜利,是概率论的胜利,也是贝叶斯定理的胜利!


🤟每日一言: 永远年轻,永远热泪盈眶!

目录

  • 前言
  • 概率论与贝叶斯
  • 机器如何学习?
  • 朴素贝叶斯分类器
  • 判别式模型 | 生成式模型
  • 贝叶斯分类原理在ChatGPT里的应用
  • 写在最后的话


前言

在这里插入图片描述

ChatGPT的胜利,是概率论的胜利,也是贝叶斯定理的胜利 ! 一个拥有约250多年历史的定理在21世纪的今天再次被发扬光大!


概率论与贝叶斯

  托马斯·贝叶斯(Thomas Baves,1701年一1761年),是18世纪的一位英国数学家、统计学家

  他曾经是个牧师,不过他“生前籍籍无名,死后众人崇拜”,在当代科技界“红”了起来,原因归结于以他命名的著名的贝叶斯定理。这个定理不仅在历史上促成了贝叶斯学派的发展,现在又被广泛应用于与人工智能密切相关的机器学习中

在这里插入图片描述

  贝叶斯做了些什么?当年,他研究一个“白球黑球”的概率问题。概率问题可以正向计算,也能反推回去。例如,盒子里有10个球,黑白两种颜色。如果我们知道10个球中5白5黑,那么,如果我问你,从中随机取出一个球,这个球是黑球的概率是多大?问题不难回答,当然是50%!如果10个球是6白4黑呢?取出一个球为黑的概率应该是40%。再考虑复杂一点的情形:如果10个球中2白8黑,现在随机取2个球,得到1黑1白的概率是多少呢?10个球取出2个的可能性总数为10*9=90种,1黑1白的情况有16种,所求概率为16/90,约等于17.5%。因此,只需进行一些简单的排列组合运算,我们可以在10个球的各种分布情形下,计算取出n个球,其中m个是黑球的概率。这些都是正向计算概率的例子。

  不过,当年的贝叶斯更感兴趣的是反过来的“逆概率问题”:假设我们预先并不知道盒子里黑球白球数目的比例,只知道总共是10个球,那么,比如说,我随机地拿出3个球,发现是2黑1白。逆概率问题则是要从这个试验样本(2黑1白),猜测盒子里白球黑球的比例。

  也可以从最简单的抛硬币试验来说明“逆概率”问题。假设我们不知道硬币是不是两面公平的,也就是说,不了解这枚硬币的物理偏向性,这时候,得到正面的概率p不一定等于50%。那么,逆概率问题便是企图从某个(或数个)试验样本来猜测p的数值。

  为了解决逆概率问题,贝叶斯在他的论文中提供了一种方法,即贝叶斯定理

在这里插入图片描述


机器如何学习?

在这里插入图片描述

  贝叶斯定理除了在概率论与统计学中绽放光彩,更是在机器学习人工智能·等领域中具有重要的应用,被广泛用于推断和预测问题!

  教机器学习,学些什么呢?实际上就是要学会如何处理数据,这也是大人教孩子学会的东西:从感官得到的大量数据中挖掘出有用的信息来。如果用数学的语言来叙述,就是从数据中建模,抽象出模型的参数

  机器学习的任务,包括了“回归”、“分类”等主要功能。回归是统计中常用的方法,目的是求解模型的参数,以便“回归”事物的本来面目。分类也是机器学习中的重要内容。

  机器学习中一般将学习种类分为有监督学习无监督学习

PS:贝叶斯分类算法是有监督学习算法中的典例!

在这里插入图片描述


朴素贝叶斯分类器

在这里插入图片描述

  朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法。

PS:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。

  假设我们测试了1000个水果的数据,包括如下三种特征:形状(长?)、味道(甜?)、颜色(黄?),这些水果有三种:苹果、香蕉、或梨子。现在,使用一个朴素贝叶斯分类器,它将如何判定一个新给的水果的类别?比如说,这个水果三种特征全具备:长、甜、黄。那么,朴素贝叶斯分类器应该可以根据已知的训练数据给出这个新数据水果是每种水果的概率

在这里插入图片描述

  下面跟着我的脚步,让我们在Python代码中将它实现!

class NaiveBayesClassifier:
    def __init__(self):
        # 先验概率
        self.prior = {'香蕉': 0.5, '苹果': 0.3, '梨子': 0.2}
        # 条件概率
        self.conditional_prob = {
            '香蕉': {'长': 0.8, '甜': 0.7, '黄': 0.9},
            '苹果': {'长': 0, '甜': 0.5, '黄': 1},
            '梨子': {'长': 0.5, '甜': 0.75, '黄': 0.25}
        }
    
    def classify(self, features):
        # 后验概率
        posterior_prob = {}
        
        # 计算每个水果类别的后验概率
        for fruit in self.prior:
            # 先验概率
            prior_prob = self.prior[fruit]
            # 条件概率初始化为1.0
            conditional_prob = 1.0
            # 计算条件概率的乘积
            for feature in features:
                conditional_prob *= self.conditional_prob[fruit][feature]
            # 计算后验概率
            posterior_prob[fruit] = prior_prob * conditional_prob
        
        # 对后验概率进行归一化,使其总和为1
        total_prob = sum(posterior_prob.values())
        for fruit in posterior_prob:
            posterior_prob[fruit] /= total_prob
        
        return posterior_prob

# 使用示例:
classifier = NaiveBayesClassifier()
features = ['长', '甜', '黄']
result = classifier.classify(features)
print(result)

  • NaiveBayesClassifier类的构造函数中,先验概率和条件概率被初始化为固定的值

  • classify方法接收一个特征列表作为输入,并计算每个水果类别的后验概率

  • 在计算后验概率时,我们首先遍历每个水果类别,然后计算每个类别的条件概率。条件概率初始化为1.0,并根据输入的特征列表乘以相应的条件概率。

  • 在计算完所有类别的后验概率后,我们对其进行归一化,使所有后验概率的总和为1

  • 最后,我们返回包含每个水果类别及其对应后验概率的字典。

在这里插入图片描述

PS:因此,当你给我一个又长、又甜、又黄的水果,此例中曾经被1000个水果训练过的贝叶斯分类器得出的结论是:这个新水果不可能是苹果(概率0%),有很小的概率(7%)是梨子,最大的可能性(93%)是香蕉。


判别式模型 | 生成式模型

在这里插入图片描述

  在机器学习中,对于有监督学习可以将其分为两类模型: 判别式模型生成式模型

PS:简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。

   判别式模型关注的是给定输入数据(特征),直接学习并建模输出标签(类别)与输入之间的条件概率分布。判别式模型主要关注于数据的边界和决策边界,以找到最佳的分类决策。常见的判别式模型包括逻辑回归支持向量机(SVM)决策树神经网络等。判别式模型的优点是它们可以直接对输入—输出关系进行建模,适用于分类回归序列标注等任务。

  生成式模型则从数据的生成过程的角度出发,通过学习数据的联合概率分布来描述数据的整体分布情况。生成式模型不仅可以推断给定输入的条件下输出的概率,还可以通过边缘化来生成新的数据样本。生成式模型通常假设数据是由潜在的隐变量和参数共同生成的。常见的生成式模型有朴素贝叶斯高斯混合模型隐马尔可夫模型等。生成式模型的优点是它们可以通过学习数据的生成过程来获取数据的整体分布信息,能够进行概率推断、生成和样本采样等操作。

PS:假设我们要构建一个垃圾邮件分类器,将收到的电子邮件分为垃圾邮件和非垃圾邮件。我们可以使用两种不同的模型来解决这个问题。

在这里插入图片描述

  • 判别式模型:我们可以选择使用逻辑回归作为判别式模型。我们提取电子邮件中的特征(例如词频词汇选择等),然后训练逻辑回归模型来学习输入特征与输出标签(垃圾邮件或非垃圾邮件)之间的条件概率分布。在预测阶段,我们可以使用训练好的模型直接计算给定电子邮件是垃圾邮件或非垃圾邮件的概率,并根据阈值进行分类决策。

  • 生成式模型:作为生成式模型的一个例子,我们可以选择朴素贝叶斯分类器。在这种情况下,我们需要计算垃圾邮件和非垃圾邮件的联合概率分布,以及每个类别的先验概率。我们可以通过学习训练集中的垃圾邮件和非垃圾邮件的特征频率来估计这些概率。在预测阶段,我们可以使用贝叶斯定理计算给定电子邮件属于每个类别的后验概率,并根据后验概率进行分类决策


贝叶斯分类原理在ChatGPT里的应用

在这里插入图片描述

  • 语言模型训练:贝叶斯原理可用于训练ChatGPT的语言模型。在预训练过程中,模型通过观察大量的文本数据来学习单词和句子之间的概率分布。通过计算条件概率,模型可以预测下一个可能的词或短语

  • 文本生成:贝叶斯原理可用于生成连贯的文本。ChatGPT可以基于已经生成的文本片段的条件概率来生成下一个合适的词或短语。通过考虑上下文和当前已生成的内容,模型可以利用贝叶斯原理来选择最有可能的下一个词。

  • 语义理解和槽填充:ChatGPT可以利用贝叶斯原理来进行语义理解和槽填充的任务。通过观察输入句子中的词语和上下文之间的概率关系,模型可以理解用户意图并填充相关的槽位信息。

  • 机器翻译:贝叶斯原理在机器翻译中也有应用。ChatGPT可以通过贝叶斯原理来计算源语言和目标语言之间的翻译概率,从而实现自动翻译功能。

在这里插入图片描述

  实际上,语言模型的主要任务就是根据输入的文本预测下一个合适的词或短语。模型会不断地根据已生成的文本片段计算条件概率,并选择最有可能的下一个词作为输出。然后,将输出的词添加到原始文本中,再将更新后的文本作为输入继续进行下一轮预测。这个过程不断循环,直到生成一个被认为是“合理的”文本为止。

  需要注意的是,ChatGPT的文字生成并非简单地进行词语的随机组合,而是基于已经观察到的文本数据和训练得到的语言模型进行概率计算和选择。这样的迭代循环过程使得生成的文本更加连贯和合理,与输入的文本上下文相符合。

PS:下面是一个简易的工作处理流程图,展示了ChatGPT的基本工作原理

用户
ChatGPT
处理输入文本
获取文本数据
训练语言模型
选择下一个词
输出词
添加词到生成文本
将生成文本作为输入
循环
生成合理文本

PS:贝叶斯原理在ChatGPT中的应用是基于概率模型的思想,ChatGPT并非直接使用贝叶斯公式进行计算,而是借鉴了贝叶斯原理的思想,并结合了神经网络和深度学习技术来实现语言模型的训练和文本生成。


写在最后的话

  本文花费大量时间介绍了贝叶斯算法原理以及它在ChatGPT中的应用,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

在这里插入图片描述

原 创 不 易 , 还 希 望 各 位 大 佬 支 持 一 下 \textcolor{blue}{原创不易,还希望各位大佬支持一下}

👍 点 赞 , 你 的 认 可 是 我 创 作 的 动 力 ! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!}

⭐️ 收 藏 , 你 的 青 睐 是 我 努 力 的 方 向 ! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!}

✏️ 评 论 , 你 的 意 见 是 我 进 步 的 财 富 ! \textcolor{98c091}{评论,你的意见是我进步的财富!}

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

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

相关文章

一分钟学一个 Linux 命令 - ps

前言 大家好,我是 god23bin。欢迎来到《一分钟学一个 Linux 命令》系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天要说的是 ps 命令。 什么是 ps 命令? ps 的英文全称是 process status,意思是进程状态。 …

Servlet执行原理和API详解---【创建Servlet项目】

目录 一、Servlet 是什么? 主要工作: 第一个Servlet项目: 编写代码 打包程序 一、Servlet 是什么? Servlet 是一款基于HTTP协议,用来开发Java Web,运行在Tomcat里面的里的框架技术。 一种实现动态页面…

chatgpt赋能python:Python创建文件

Python创建文件 Python是一种高级编程语言,广泛应用于各种领域,尤其在数据分析、机器学习和人工智能方面被广泛使用。在Python中,创建文件是一项基本任务,本文将介绍如何使用Python创建文件。 创建一个空文件 在Python中&#…

3.CSS 的背景

通过CSS背景属性,可以给页面元素添加背景样式。 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 3.1背景颜色 background-color属性定义了元素的背景颜色 background-color:颜色值;一般情况下元素背景颜色默认值是transparent(透…

【实战】 React 与 Hook 应用:实现项目列表 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表1.新建文件2.状态提升3.新建utils4.Custom Hook 学习内容来源:React React Hook TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.0…

记录好项目D8

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是超市管理系统 技术栈:springbootjavamysqlthyemleafshiro …

数据安全--24--数据安全管理之API管理

本博客地址:https://security.blog.csdn.net/article/details/131274853 一、API管理概述 API是指应用程序编程接口,它的存在主要是为了提高系统各组成单元的内聚性,降低组成单元之间的耦合程度(相互依赖程度)&#…

[元带你学: eMMC协议详解 18] eMMC的后台操作(Background Operations)

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 1800 字, 主要内容 1、后台操作/前台操作区别? 2、如何进行手动后台操作? 3、自动后台启动和停止方法&a…

【Redis基础】

Redis基础 Redis基础Note Redis基础1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启1.3.7.wi…

web安全自学笔记

Web 安全方面的基本知识是有很必要的,未必就要深入理解。本文主要介绍常见的网络攻击类型,不作深入探讨。 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描、弱口令暴力破解,到 SQL 注入,再到复杂的网络劫持等…

基于Web的影院信息管理系统设计与实现(论文+源码)_kaic

摘要 随着文化产业的发展,电影行业迎来了发展的黄金期,而且人民生活水平的 不断提高,观众对影院的服务要求也越来越高。传统的服务模式,已经不能满足 观众的需求,随着信息技术的发展,越来越多的影院将信息技…

Qt 中动态加载窗口

在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将 **.ui 添加到资源文件,通过 QUiLoader 加载。 现将两种方法介绍如下…

LAMPDISCUZ论坛

目录 1.1 LAMP 1.2 LAMP架构搭建 2. 关闭防火墙,将安装Apache所需软件包传到/opt目录下 APache的源码编译安装涉及到的软件包: 2.2 安装环境依赖包 2.3 配置软件模块 2.4 添加httpd系统服务 2.5 修改httpd 服务配置文件 3.编译安装mysqld 服务 3.1 …

1. CSS的三大特性

CSS有三个非常重要的三个特性:层叠性、继承性、优先级 1.1层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突 的问题 层叠性原则: ●样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个…

记一次Windows 下Microsoft Store应用权限问题

关键字:windows、 microsoft store 画图 mspaint 终端 terminal Windows11 锁屏界面黑屏 起因 情不知所起,额走错片场了。。。 具体原因无法确定,猜测是由于之前磁盘故障后进行修复导致的权限丢失异常 表象 几乎是所有的Microsoft store的…

Java-反射机制(超详解)

Java反射机制概述 前言一、Java反射机制概述1. Java Reflection2. 动态语言 vs 静态语言二、 Class类的理解1. 类的加载过程1.1 初步了解1.2 类的加载过程图解1.3 了解:什么时候会发生类初始化?1.4 类加载器的作用1.5 JVM中不同类型的类的加载器1.6 代码…

SpringMVC系列-1 使用方式和启动流程

背景 SpringMVC作为SSM组件之一,Java开发有必要了解SpringMVC是如何被集成到Spring框架以及整个项目的启动流程。本文以Tomcat作为Servlet容器进行介绍,默认认为读者使用过Tomcat且对Tomcat内部组件有足够的理解。 1.启动流程 当Tomcat被部署到服务器…

node的安装配置

这个是官网下载地址 推荐选择下载LTS版本的下载,不推荐下载最新版的,下载完成之后,在安装过程中更改安装路径默认是c盘的,如果c盘空间大当我没说,接着一路傻瓜式安装默认点击下一步,直到安装完成。 创建文…

chatgpt赋能python:Python怎样设置字体大小

Python 怎样设置字体大小 作为一名Python工程师,我们经常需要在论文或文档中使用Python进行数据分析,数据可视化和数据科学等方面的工作。在这些文档中,字体大小的设置是非常重要的,因为它直接影响阅读体验和文档的可读性。因此&…

幸运九宫格抽奖码九宫格抽奖系统独立版源码php修复版

🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 1.本程序在PHP5.3 ~ PHP5.6环境 2.后台访问地址:域名/admin/index.php U:admin P:admin 手动安装 1.导入1776.sql到数据库 …