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.mzph.cn/pingmian/18285.shtml

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

相关文章

循环buffer“一写多读“

1.往期回顾 一个简单实用的循环buffer,用于缓冲数据!测试500M数据,耗时1.3秒。 C语言版本的循环buffer比C版本的速度更快!测试500M数据0.5秒,达9.25Gbps左右! C 语言免拷贝版本循环 buffer 比拷贝版本快了…

Golang并发编程-协程goroutine的信道(channel)

文章目录 前言一、信道的定义与使用信道的声明信道的使用二、信道的容量与长度三、缓冲信道与无缓冲信道缓冲信道无缓冲信道四、信道的初体验信道关闭的广播机制总结前言 Goroutine的开发,当遇到生产者消费者场景的时候,离不开 channel(信道)的使用。 信道,就是一个管道,…

Redis介绍及安装配置

1 什么是Redis Redis 的定义:Redis(Remote Dictionary Server 远程字典服务)是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可见Redis和我们最经常使用的MySQL都…

技术创新加速生态繁荣 | 软通动力子公司鸿湖万联亮相OpenHarmony开发者大会2024

5月25日,由开放原子开源基金会OpenHarmony项目群工作委员会主办的OpenHarmony开发者大会2024在深圳成功举行。本次大会紧扣OpenHarmony 4.1 Release版本发布契机,以“鸿心聚力,智引未来”为主题、通过“1场主论坛6场技术分论坛”承载&#xf…

mysql 8 [HY000][1114] The table ‘/tmp/#sql4c3_3e5a0_2‘ is full

分组有个比较大的表,出现了临时表空间满了的情况; 试用该sql 语句: SHOW GLOBAL VARIABLES LIKE internal_tmp_mem_storage_engine; 可以看到 默认临时结果是用临时表存的,在mysql的my.cnt可以改临时空间的大小 但是磁盘哪有内…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率:hashcode的时间复杂度为O(1)(因为只要计算一次哈…

Vue 菜单组件开发教程

在 Vue 项目中&#xff0c;我们常常需要构建各种菜单结构。下面就来详细介绍如何基于给定的代码来开发一个菜单组件。 组件部分 一、模板部分 <template> <template v-for"item in menuTree" :key"item._id"> <el-sub-menu v-if"i…

EtherCAT协议概述

EtherCAT 是由德国 BECKOFF 自动化公司于2003年提出的实时工业以太网技术。它具有高速和高数据有效率的特点&#xff0c;支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片&#xff0c;主站使用标准的以太网控制器。 EtherCAT 的主要特点如下 : ①泛的适用性&#xff0c…

【Pandas】深入解析`pd.read_sql()`函数

【Pandas】深入解析pd.read_sql()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xf…

《KAN》论文笔记

原文出处 KAN: Kolmogorov–Arnold Networks (arxiv.org)https://arxiv.org/html/2404.19756v1 论文笔记 What 《KAN: Kolmogorov–Arnold Networks》——我们提出了 KolmogorovArnold Networks (KANs) 作为多层感知器 (MLP) 的有前途的替代方案。 我们表明&#xff0c;这…

STM32简易音乐播放器(HAL库)

一、设计描述 本设计以STM32MP157A单片机为核心控制器&#xff0c;加上其他的模块一起组成基于单片机的音乐盒的整个系统&#xff0c;通过不同频率的PWM使蜂鸣器播放音乐&#xff0c;通过按键中断实现歌曲切换&#xff0c;音量调节&#xff0c;定时器中断实现播放速度调节&…

kafka-生产者发送消息消费者消费消息

文章目录 1、生产者发送消息&消费者消费消息1.1、获取 kafka-console-producer.sh 的帮助信息1.2、生产者发送消息到某个主题1.3、消费主题数据 1、生产者发送消息&消费者消费消息 1.1、获取 kafka-console-producer.sh 的帮助信息 [rootlocalhost ~]# kafka-console…

Xunsearch:实现拼音搜索和中文分词功能

首先我们需要安装xunsearch扩展库&#xff0c;参考 1、设置分词器和拼音搜索功能 在创建Xunsearch对象后&#xff0c;可以设置相应的分词器和拼音搜索功能。以下代码示例演示了如何设置分词器和拼音搜索功能&#xff1a; $index $xunsearch->index; $index->setToken…

解决SSH客户端远程连接CentOS7虚拟机时加载过慢问题

1、编辑 /etc/ssh/sshd_config 文件&#xff0c;将 useDNS 中的 yes 改为 no &#xff0c;关闭UseDNS加速&#xff1a; vi /etc/ssh/sshd_config2、重启ssh服务: systemctl restart sshd

Golang 创建第一个web项目(Gin + Gorm)

1. 写这篇博客的由来&#xff1a; 当你想使用最快的框架创建项目的时候是不是有点束手无策&#xff1f; 当你想配置数据库写 SQL 甚至不知道如何写&#xff0c;文件夹都不知道建在哪里&#xff1f; &#x1f604;因为Golang 目前并没有 JAVA 那种硬性规范&#xff0c;但是…

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发送消息会存…

巨额分红与大幅下调募资金额,小方制药注册生效半年后仍无进展

《港湾商业观察》施子夫 2022年7月1日&#xff0c;上海小方制药股份有限公司&#xff08;以下简称&#xff0c;小方制药&#xff09;递表上交所板&#xff0c;2023年9月1日公司提交了注册申请&#xff0c;并于同年12月19日获得生效。 离挂牌上市仅有一步之遥的小方制药注册生…

flutter开发实战-外接纹理texture处理图片展示

flutter开发实战-外接纹理处理图片展示 在Flutter中&#xff0c;如果你想要创建一个外接纹理的widget&#xff0c;你可以使用Texture widget。Texture widget用于显示视频或者画布&#xff08;canvas&#xff09;的内容。该组件只有唯一入参textureId 通过外接纹理的方式&…

迁移基于MicroBlaze处理器的设计

迁移基于MicroBlaze处理器的设计 生成系统基础设施&#xff08;MicroBlaze、AXI_Interconnect&#xff0c; Clk_Wiz、Proc_Sys_Reset&#xff09; 生成系统基础设施&#xff08;MicroBlaze、AXI_Interconnect、Clk_Wiz和 Proc_Sys_Reset&#xff09;&#xff1a; 1.使用所需的板…

2024年【危险化学品经营单位安全管理人员】考试报名及危险化学品经营单位安全管理人员找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员找解析题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品经营单位安全管…