HNU-人工智能-作业3

人工智能-作业3

计科210X 甘晴void 202108010XXX

1.贝叶斯网络

根据图所给出的贝叶斯网络,其中:P(A)=0.5,P(B|A)=1, P(B|¬A)=0.5, P(C|A)=1, P(C|¬A)=0.5,P(D|BC)=1,P(D|B, ¬C)=0.5,P(D|¬B,C)=0.5,P(D|¬B, ¬C)=0。试计算下列概率P(A|D)。

解:

2.不确定性的量化

某学校,所有的男生都穿裤子,而女生当中,一半穿裤子,一半穿裙子。男女比例70%的可能性是4:6,有20%可能性是1:1,有10%可能性是6:4,问一个穿裤子的人是男生的概率有多大?

解:

3.决策树

设样本集合如下表格,其中A、B、C是F的属性,请根据信息增益标准(ID3算法),画出F的决策树。其中

ABCF
0000
0011
0100
0111
1001
1011
1100

解:

4.人工神经网络

阈值感知器可以用来执行很多逻辑函数,说明它对二进制逻辑函数与(AND)和或(OR)的实现过程。

解:

二进制逻辑函数与(AND)和或(OR)只在训练样本上有区别,在训练过程上是一致的。

这是与(AND)函数的训练样本

X1X2Y
000
010
100
111

这是或(OR)函数的训练样本

X1X2Y
000
011
101
111

下面我们以AND为例,进行一次训练过程

这是感知机示意图

下面是训练步骤:

  • (1)初始化:设定初始的权值w1,w2,和θ阈值为[-0.5,0.5]之间的随机数,(即刚开始的数值不重要,后续都会通过样本迭代修正收敛)

  • (2)计算得到Y(p):根据输入x1 (p), x2 (p) 和权值w1,w2计算输出Y(p),其中p表示迭代的轮数

  • (3)更新权值:按照下述公式计算下一轮的权重值

    • e(p) = Yd(p) - Y(p)

    • Δwi(p) = α · xi(p) · e(p)

    • wi(p+1) = wi(p) + Δwi(p)

  • (4)迭代循环:增加p值,不断重复步骤(2)-(3)直到收敛(即e在一段循环间小于一个较小值)

我使用python写了一个简单的逻辑

import numpy as np# 简单感知器
class Perceptron(object):def __init__(self, lr, epoch):# 指定 X 维度数,这里是2self.input_dim = 2# 指定激活函数,这里用阶跃函数self.activator = self.__step# 指定学习率与训练轮数self.lr = lrself.epoch = epoch# 权重向量初始化为[-0.5,0.5]随机数self.weights = np.random.uniform(-0.5, 0.5, self.input_dim)self.bias = np.random.uniform(-0.5, 0.5)# 阶跃函数def __step(self, x):return 1 if x > 0 else 0# 返回感知机的参数def __str__(self):return 'weight: %s\n  bias: %f\n' % (self.weights, self.bias)# 正向传播def __forward(self, X):y_temp = np.dot(self.weights, X) + self.biasY = self.activator(y_temp)return Y# 训练def __train(self, inputs, labels):for _ in range(self.epoch):samples = zip(inputs, labels)for input, label in samples:output = self.__forward(input)self.__update_weights(input, output, label)# 反向传播,更新数值def __update_weights(self, input, output, label):delta = label - outputself.weights += self.lr * delta * inputself.bias += self.lr * delta# 训练(外部接口)def train(self, inputs, labels):self.__train(inputs, labels)# 预测(外部接口)def predict(self, X):return self.__forward(X)def get_train_dataset(mode):# 构建训练数据if mode=="and":input_vecs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])  # Xlabels = np.array([0, 0, 0, 1])  # labelsreturn input_vecs, labelsif mode=="or":input_vecs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])  # Xlabels = np.array([0, 1, 1, 1])  # labelsreturn input_vecs, labelsif __name__ == "__main__":# 选择模式 and 还是 or , 直接输入即可mode = "or"# 实例化感知机perceptron = Perceptron(lr=0.001,epoch=1000)# 获取数据集input_vecs, labels = get_train_dataset(mode=mode)# 训练perceptron.train(input_vecs, labels)# 输出权重信息print(perceptron)#测试真值表print("0 {mode} 0 = {ans}".format(mode=mode,ans=perceptron.predict([0, 0])))print("0 {mode} 1 = {ans}".format(mode=mode,ans=perceptron.predict([0, 1])))print("1 {mode} 0 = {ans}".format(mode=mode,ans=perceptron.predict([1, 0])))print("1 {mode} 1 = {ans}".format(mode=mode,ans=perceptron.predict([1, 1])))

可以运行看看结果

# or
weight: [0.10514797 0.49573695]bias: -0.1048320 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1# and
weight: [0.12922707 0.00225016]bias: -0.1310450 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

5.深度学习

深度学习的原理是什么?以一个典型的深度学习算法为例进行说明。

解:

【深度学习的原理】

深度学习的原理主要基于神经网络模型的训练和优化,它包含了多个层次的神经元,每一层都会对输入数据进行一系列非线性变换和特征提取,最终输出结果。

★深度学习相对于普通神经网络的主要特点在于:使用包含多个隐层的深层神经网络。这也是深度学习为什么能够做的比普通神经网络好的原理所在。

典型的深度学习算法包括卷积神经网络(Convolutional Neural Networks, CNN)、循环神经网络(Recurrent Neural Networks, RNN)、长短期记忆网络(Long Short-Term Memory, LSTM)和注意力机制(Attention Mechanism)等。

【举例说明】

接下来我将以典型深度学习模型之一的 Transformer 为例,简要说明深度学习(主要是注意力机制)的原理:

这是经典的《attention is all you need》论文中的transformer结构

(1)原理概述

Transformer 是一种用于处理序列数据的深度学习模型,最初用于自然语言处理任务,如机器翻译和语言建模。其核心思想是完全基于注意力机制,通过自注意力机制(self-attention mechanism)来捕捉输入序列中的依赖关系,从而实现对序列数据的建模和处理。

(2)自注意力机制(Self-Attention Mechanism)

自注意力机制是 Transformer 模型的核心组成部分,用于学习序列中不同位置之间的关系。在自注意力机制中,每个输入位置都可以与其他所有位置进行交互,从而使得模型能够在不同位置之间学习到不同程度的依赖关系。

自注意力机制的计算过程如下:

  • 对于输入序列中的每个位置,计算其与所有其他位置的注意力权重。

  • 使用注意力权重对所有位置的特征进行加权求和,得到每个位置的输出表示。

Attention(multi)包括三个注意力层

  • (encoder)自注意力层

  • (decoder)遮盖多头注意力层

  • (decoder)交互注意力层

(3)Transformer 模型结构

Transformer 模型由编码器(Encoder)和解码器(Decoder)组成,每个编码器和解码器都由多个注意力层和前馈神经网络层组成。

  • 编码器(Encoder):用于将输入序列编码为表示丰富的特征向量,其中每个位置都包含输入序列的全局信息。

    • 包含多个注意力层(self-attention)和前馈神经网络层。

  • 解码器(Decoder):根据编码器生成的特征向量来生成输出序列。

    • 包含多个注意力层(self-attention)和编码器-解码器注意力层(encoder-decoder attention)以及前馈神经网络层。

(4)Transformer 训练过程

  • 输入序列经过编码器得到特征表示。

  • 特征表示经过解码器生成输出序列。

  • 训练过程中通过反向传播算法更新模型参数,使得模型输出的序列尽可能地接近目标序列。

(5)优势

  • 可并行化处理:Transformer 模型中的注意力机制使得模型能够并行化处理输入序列中的不同位置,从而加速模型训练和推理过程。

  • 长距离依赖建模:通过自注意力机制,Transformer 能够更好地捕捉输入序列中不同位置之间的长距离依赖关系,从而提高模型的建模能力。

参考答案

第1题

第2题

第3题

第4题

第5题

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

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

相关文章

如何将天猫内容保存为PDF格式?详细步骤与实战解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:保存天猫内容的重要性 二、环境准备与工具安装 1. 安装必要的Python包…

宝塔部署Java+Vue前后端分离项目

1. 服务器 服务器选择Linux的CentOS7的版本 2. 宝塔Linux面板 2.1 百度搜索宝塔 2.2 进去之后点击立即免费安装 2.3 选择Linux在线安装,输入服务器信息进行安装(也可以选择其他方式) 安装完成之后会弹一个宝塔的应用面板,并附带有登录名称和密码&…

Linux快速定位日志 排查bug技巧和常用命令

1. 快速根据关键字定位错误信息 grep 在 Linux 系统中,可以使用 grep 命令来查找日志文件中包含特定关键字的行。假设你的日志文件路径为 /var/log/myapp.log,你想要查找包含关键字 "abc" 的日志内容,可以按照以下步骤操作&#…

【机器学习聚类算法实战-5】机器学习聚类算法之DBSCAN聚类、K均值聚类算法、分层聚类和不同度量的聚集聚类实例分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

【微服务】安装docker以及可视化界面

1.配置yum下载源为aliyun源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.下载docker不加版本号默认为最新版本 yum install -y docker-ce3.启动以及开机自启 #启动docker命令 systemctl start docker #设置开机自启命令…

软件功能测试的类型和流程分享

在现代社会,软件已经成为人们生活中不可或缺的一部分,而在软件的开发过程中,功能测试是不可或缺的环节。软件功能测试指的是对软件系统的功能进行检查和验证,以确保软件在各种情况下能够正常运行,并且能够按照用户需求…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

【电路笔记】-状态可变滤波器

状态可变滤波器 文章目录 状态可变滤波器1、概述2、**状态可变滤波器电路**3、状态可变滤波器示例4、陷波滤波器设计5、总结状态可变滤波器是一种多反馈滤波器电路,可以从同一单个有源滤波器设计中同时产生所有三种滤波器响应:低通、高通和带通。 1、概述 状态可变滤波器使用…

Vue中使用Vue-scroll做表格使得在x轴滑动

页面效果 首先 npm i vuescroll 在main.js中挂载到全局 页面代码 <template><div class"app-container"><Header :titletitle gobackgoBack><template v-slot:icon><van-icon clickgoHome classicon namewap-home-o /></templat…

HackTheBox-Machines--Beep

Beep测试过程 1 信息收集 nmap端口扫描 gryphonwsdl ~ % nmap -sC -sV 10.129.137.179 Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-28 14:39 CST Nmap scan report for 10.129.229.183 Host is up (0.28s latency). Not shown: 988 closed tcp ports (conn-refused…

DSP6657 GPIO中断学习

1 简介 使用创龙板卡的KEY2按键通过中断的方式控制LED3的亮灭 2 中断学习 在C665x设备上&#xff0c;CPU中断是通过C66x CorePac中断控制器进行配置的。该中断控制器允许最多128个系统事件被编程到任意12个CPU可屏蔽中断输入&#xff08;CPUINT4至CPUINT15&#xff09;、CPU…

如何成为一名合格的JAVA程序员?

如何成为一名称职的Java编程人员&#xff1f;你一定不能错过的两本书。 第一本《Java核心技术速学版&#xff08;第3版&#xff09;》&#xff01; 1.经典Java作品《Java核心技术》的速学版本&#xff0c;降低学习门槛&#xff0c;帮助读者更容易学习Java&#xff0c;更快地把…

HTML+CSS TAB导航栏

效果演示 这段代码实现了一个名为"Tab导航栏"的效果,它是一个基于CSS的导航栏,包含五个选项卡,每个选项卡都有一个带有渐变背景色的滑块,当用户点击选项卡时,滑块会滑动到相应的位置。同时,选中的选项卡会变为白色,未选中的选项卡会变为灰色。 Code <!DOC…

基于FPGA实现LED的闪烁——HLS

基于FPGA实现LED的闪烁——HLS 引言&#xff1a; ​ 随着电子技术的飞速发展&#xff0c;硬件设计和开发的速度与效率成为了衡量一个项目成功与否的关键因素。在传统的硬件开发流程中&#xff0c;工程师通常需要使用VHDL或Verilog等硬件描述语言来编写底层的硬件逻辑&#xff0…

kafka-主题创建(主题操作的命令)

文章目录 1、topic主题操作的命令1.1、创建一个3分区1副本的主题1.1.1、获取 kafka-topics.sh 的帮助信息1.1.2、副本因子设置不能超过集群中broker的数量1.1.3、创建一个3分区1副本的主题1.1.4、查看所有主题1.1.5、查看主题详细描述 1、topic主题操作的命令 kafka发送消息会存…

vue中在mounted使用$refs获取不到DOM元素

vue中在mounted使用$refs获取不到DOM元素 前言解决方案1、通过使用$nextTick来获取2、updated中获取 前言 在使用ref的时候&#xff0c;在mounted中通过$ref获取节点是获取不到报undefined this.$refs.xx 为 undefined 解决方案 在mounted钩子中加载回来的数据不会在这个阶段更…

YoloV8实战:各种图绘制汇总(mAP50、mAP50-95、loss、PR_curve、F1_curve)|科研必备|绘图神器

摘要 本文的内容是告诉大家如何绘制mAP50、mAP50-95、loss、PR_curve、F1_curve等图像,方便大家写论文。 绘制mAP50、mAP50-95、loss等图。 先上效果,如下图: 首先将,训练的result.csv汇总到一个文件夹下面(这样方便寻找),要不然找起来太麻烦。如下图: 我都放到re…

Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption

Abstract Aleth-NeRF: 带有隐蔽场假设的照明自适应 NeRF 照明照明标准的神经辐射场(NeRF)范例采用了一种以观察者为中心的方法,将光照和材料反射的各个方面仅仅从3D 点发射纠缠在一起。这种简化的渲染方法在准确建模在不利光照条件下捕获的图像方面提出了挑战,如弱光或过度曝…

【Linux】LAMP集群分布式安全方案

LAMP集群分布式安全方案主要涉及确保Linux、Apache、MySQL和PHP&#xff08;LAMP&#xff09;组合构成的集群环境的安全性和稳定性。 本次实验通过网络层安全对防火墙配置&#xff1a;使用防火墙&#xff08;如iptables或firewalld&#xff09;来限制对集群的访问&#xff0c;只…

152.找出峰值(力扣)

代码解决 class Solution { public:// 函数用于找到山峰元素的索引vector<int> findPeaks(vector<int>& mountain) {vector<int> result; // 用于存储山峰元素的索引// 遍历数组&#xff0c;从第二个元素到倒数第二个元素for(int i 1; i 1 < mount…