机器学习中的神经网络重难点!纯干货(上篇)

.

.

.

.

.

.

.

.

.纯干货

.

.

.

.

.

.

 目录

前馈神经网络

基本原理

公式解释

一个示例

卷积神经网络

基本原理

公式解释

一个示例

循环神经网络

基本原理

公式解释

一个案例

长短时记忆网络

基本原理

公式解释

一个示例

自注意力模型

基本原理

自注意力机制

具体步骤

公式解释

一个案例

生成对抗网络

基本原理

公式解释

一个案例

最后


人工神经网络(Artificial Neural Network,ANN)是一种受到生物神经系统启发的计算模型,用于模拟和处理复杂的信息处理任务。

人工神经网络由许多神经元(或称为节点)组成,这些神经元通过连接(也称为权重)相互连接,形成了一个网络结构,以模拟大脑中神经细胞之间的相互作用。

下面,咱们大概介绍一下关于 ANN 的组成部分工作原理

1、神经元(Neurons):神经元是神经网络的基本单元,它们接收输入、执行计算并生成输出。每个神经元都有一个激活函数,用于将输入信号转换为输出信号。典型的激活函数包括Sigmoid、ReLU(Rectified Linear Unit)和Tanh(双曲正切)等。

2、层(Layers):神经网络通常由多个层组成,包括输入层、隐藏层和输出层。输入层用于接收原始数据,隐藏层用于提取特征,输出层用于生成最终的预测或结果。

3、连接权重(Connection Weights):每个神经元之间的连接都有一个权重,它表示了不同神经元之间信息传递的强度。这些权重是通过训练过程中自动学习得到的,以使神经网络能够适应特定任务。

4、前向传播(Feedforward):在前向传播中,输入信号从输入层传递到输出层,通过神经元之间的连接传递,并最终产生预测或输出。前向传播过程是通过计算每个神经元的加权和并应用激活函数来完成的。

5、训练(Training):神经网络的训练过程是通过反向传播算法来完成的。训练期间,网络与标记数据进行比较,计算预测与实际值之间的误差,并通过调整连接权重来减小误差。这个过程通过梯度下降算法来实现,以最小化损失函数。

6、损失函数(Loss Function):损失函数用于度量模型的预测与实际值之间的差距。训练的目标是最小化损失函数的值。

7、激活函数(Activation Function):激活函数在神经元内部计算输入的加权和后,将结果转换为神经元的输出。它们引入非线性性,允许神经网络捕捉更复杂的模式。

8、反向传播(Backpropagation):反向传播是一种迭代的优化过程,用于根据损失函数的梯度调整连接权重,以改进神经网络的性能。这个过程从输出层向后传递误差信号,并根据误差信号来更新权重。

9、深度神经网络(Deep Neural Networks):包含多个隐藏层的神经网络被称为深度神经网络。它们在处理复杂问题和大规模数据集时表现出色,例如图像识别、自然语言处理和语音识别。

10、应用领域:人工神经网络用于机器学习和人工智能的几乎每个领域,包括图像识别、语音识别、自然语言处理、推荐系统、自动驾驶、金融预测等等。

接下来,从下面 6 部分详细说说关于ANN 的内容:

  • 前馈神经网络

  • 卷积神经网络

  • 循环神经网络

  • 长短时记忆网络

  • 自注意力模型

  • 生成对抗网络

一起来看看~

前馈神经网络

前馈神经网络灵感来自于人脑的神经元。它的工作方式如同信息在不同层之间前馈传递,就像传送带一样。

这种传递是单向的,不会形成回路,因此称为“前馈”。

基本原理

前馈神经网络由多个神经元组成,这些神经元排列成不同的层次:输入层、隐藏层和输出层。

  • 输入层:接受你提供的数据,例如图像的像素值或文本的单词。

  • 隐藏层:网络的核心,负责处理输入数据。它可以有多层,每一层都执行一些数学运算。

  • 输出层:输出层给出了最终的结果,如图像中的对象类型或文本的情感。

一个示例

考虑以下的问题:我们有一组学生的考试成绩(数学和语文),我们想根据这些成绩来预测学生是否会被大学录取。

首先,我们创建一个前馈神经网络模型。

案例中使用 TensorFlow 进行实现:

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt# 创建示例数据集
data = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = data.load_data()# 构建前馈神经网络
model = models.Sequential([layers.Flatten(input_shape=(28, 28)),layers.Dense(128, activation='relu'),layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 训练模型
history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))# 绘制训练损失曲线
plt.plot(history.history['loss'], label='训练损失')
plt.plot(history.history['val_loss'], label='验证损失')
plt.xlabel('Einpochs')
plt.ylabel('损失')
plt.legend()
plt.show()

代码中使用了TensorFlow和Fashion MNIST数据集来创建一个前馈神经网络模型。

前馈神经网络是深度学习的基础,模拟了大脑中神经元的工作方式。通过学习权重和偏差,这些网络可以适应各种任务。

卷积神经网络

想象一下,你要辨认一张图片中的狗,你会先注意到图像的一些局部特征,如眼睛、鼻子、耳朵等,然后将这些特征组合在一起,最终确定这是一只狗。CNN就像模拟这个过程的机器。

CNN通过层层的计算,从图像中提取特征,然后将这些特征组合在一起来进行图像分类。这个过程就像你在拼图中找到每个小块的形状和颜色,最后把它们组合成完整的图像。

基本原理

卷积神经网络的核心思想是卷积操作。卷积是一种数学运算,它通过在输入图像上滑动一个小窗口(通常称为卷积核或滤波器)来检测图像中的特征。

这个卷积核会在图像上不断平移,每次计算一个局部区域的加权和,从而生成一个特征图。这个特征图的每个元素代表着检测到的特征的强度。

卷积操作具有局部性质,这意味着它只关注图像的一小部分,这与我们人类观察图像的方式相似。这也使得CNN对平移、旋转和缩放具有一定的不变性,因为它们可以检测到相同的特征,无论这些特征在图像中的位置如何变化。

一个示例

为了更好地理解,让我们考虑一个经典的图像分类问题:手写数字识别。

我们使用Python和TensorFlow来构建一个CNN模型,并将其应用于MNIST数据集,该数据集包含手写数字图像。

 
import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt# 载入MNIST数据集
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 创建卷积神经网络模型
model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
history = model.fit(train_images, train_labels, epochs=5,validation_data=(test_images, test_labels))# 可视化训练过程
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label='val_accuracy')
plt.xlabel('Epochs')
plt.ylabel('accuracy')
plt.legend()
plt.show()

代码中演示了如何构建一个CNN模型,用于手写数字识别,以及如何训练该模型。

可以看到,准确率逐渐提高,这是因为CNN学会了从图像中提取特征。

卷积神经网络通过卷积操作来提取图像中的特征,从而实现图像分类等任务。

当然上述例子只是浅尝辄止,大家可以根据自己的实际情况进一步深入学习。

循环神经网络

循环神经网络(RNN)就像一个有记忆的模型,它可以处理序列数据,如文本、音频、时间序列等。通过不断地传递信息并保持内部状态,从而能够理解数据的上下文。

举个例子,假设你在阅读一本小说。你需要记住前几页的情节,因为它们可能会影响后面的故事发展。RNN就是模拟这种记忆的过程。

基本原理

RNN的基本构建块是神经元,它接受输入和内部状态,并输出。这个内部状态是网络的记忆,用来存储之前看到的信息。

RNN中有一个循环连接,它允许信息在不同时间步之间传递。这个循环连接就像书中的页码,你可以从前一页跳到下一页。这允许RNN处理任意长度的序列数据。

一个案例

为了更好地理解RNN,咱们考虑用一个时间序列数据的简单问题。

使用Python和TensorFlow来构建一个RNN模型,并将其应用于天气预测。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt# 创建示例时间序列数据
time_steps = np.linspace(0, 100, num=100)
sin_wave = np.sin(time_steps)# 准备数据
X, y = [], []
for i in range(len(sin_wave) - 10):X.append(sin_wave[i:i+10])y.append(sin_wave[i+10])X = np.array(X)
y = np.array(y)# 构建RNN模型
model = tf.keras.Sequential([tf.keras.layers.SimpleRNN(10, input_shape=(10, 1)),tf.keras.layers.Dense(1)
])# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X, y, epochs=100, batch_size=16)# 预测结果
predicted = model.predict(X)# 可视化结果
plt.plot(time_steps[10:], y, label="accuracy_data")
plt.plot(time_steps[10:], predicted, label="predict_data")
plt.legend()
plt.show()

模型在经过训练后能够较好地拟合实际数据,从而进行预测。

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

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

相关文章

一些前端优质的代码片段

在前端编程中,高质量的代码不仅实现功能,还注重可读性、可维护性和性能。以下是一些值得品味和学习的优质前端代码片段,涵盖了函数式编程、ES6新特性、以及一些最佳实践示例: 文章目录 1. 箭头函数与数组方法结合使用2. 解构赋值…

Digital电路仿真软件的安装

文章目录 1. Java环境的安装 2. Digital安装 3. 软件配置 1. Java环境的安装 电路仿真软件Digital是一款用于设计和仿真数字逻辑电路的工具。它可以帮助用户创建、测试和调试各种数字电路,提供可视化的电路编辑环境,使得设计过程更加直观和便捷。 D…

MySQL数据操作与查询- 连接查询

一、引入 1、为什么需要使用连接查询? 查询信息的来源如果来自多张表,则必须对这些表进行连接查询。 2、连接查询的分类 内连接和外连接。 二、内连接 1、概述 将两张表的记录组合在一起,产生一个新的结果。 (1&#xff09…

【Java】过滤器/拦截器

文章目录 两者区别request链路全过程 在实际开发中,过滤器和拦截器都是经常使用的技术,但一被提及到其区别时,整个人就愣住了,好像没有认真地对两者进行区别和总结,这两者之间也确实很容易混淆,因此结合了很…

Milvus Cloud 问答机器人 上线!构建企业级的 Chatbot

01. 背景 早些时候我们在社区微信群发出了一份关于Milvus Cloud 自动问答机器人的调研问卷。 调研受到了社区同学的积极响应,很快我们就收到了很多热心用户的回复。 基于这些回复,我们整理出了 Milvus Cloud Chatbot 的形态: 以功能使用和文档查询为核心 提供聊天和搜索双形…

version-manager最好用的SDK版本管理器,v0.6.2发布

项目地址:https://github.com/gvcgo/version-manager 中文文档:https://gvcgo.github.io/vdocs/#/zh-cn/introduction 功能特点: 跨平台,支持Windows,Linux,MacOS支持多种语言和工具,省心受到…

react捡起来了

通过脚手架创建react项目: 1.首先看下自己的npm和node版本:cmd打开自己的终端:输入: npm -v 查看npm的版本 node -v查看node的版本 2.不确定自己以前是否安装过creare-react-app,可以通过create-react-app -V(–versio…

【Apache Doris】周FAQ集锦:第 5 期

【Apache Doris】周FAQ集锦:第 5 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

【泛微系统】PC端/移动端JS写法区别

PC端/移动端JS写法区别 1.提交时调用的方法不同: PC端提交时调用:checkCustomize 移动端提交时调用:window.doSubmit_4Mobile 案例:PC端:var checkCustomize2 = checkCustomize;checkCustomize = function (){//这里添加代码//if(1 == 2){// return false;//}return …

【云原生】Kubernetes----Kubernetes集群部署Prometheus 和Grafana

目录 引言 一、环境准备 二、部署node-exporter (一)创建命名空间 (二)部署node-exporter 1.获取镜像 2.定义yaml文件 3.创建服务 4.查看监控数据 三、部署Prometheus (一)创建账号并授权 &…

厂里资讯之app端文章查看

文章列表加载 需求分析 文章布局展示 表结构分析 ap_article 文章基本信息表 ap_article_config 文章配置表 ap_article_content 文章内容表 三张表关系分析 根据数据库设计的表生成对应的实体类 ap_article文章表对应实体 package com.kjz.model.article.pojos;import co…

2024.6.16 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、创新点 4、匹配问题 5、SuperGlue架构 5.1、注意力图神经网络(Attentional Graph Neural Network) 5.2、最佳匹配层(Optimal matching layer) 5.3、损失 6、实验 6.…

【教程】Linux设置进程的优先级

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 关键指令 sudo chrt -f <优先级> <指令> 示例脚本 当然也可以不是启动Python脚本&#xff0c;普通的指令都可以&#xff0c;可自行适当修…

38、基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

1、原理及流程 1&#xff09;原理 CNN&#xff08;卷积神经网络&#xff09;是一种深度学习模型&#xff0c;可以用于图像识别和分类任务。车牌自动识别系统的原理基本上就是使用CNN模型对车牌图像进行处理和识别。 首先&#xff1a;系统需要收集大量的含有车牌的图像数据作…

cmake target_include_directories 详解

在 CMake 中&#xff0c;target_include_directories 命令用于向特定目标&#xff08;如可执行文件或库&#xff09;添加包含目录&#xff0c;以便编译器能够找到特定目标所需的头文件。 基本语法 target_include_directories(target_name[SYSTEM] [BEFORE]directory1[direct…

什么是知识图谱

文章目录 知识图谱概念知识图谱的发展历史知识图谱的价值知识图谱概念 知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。知识图谱由节点和边组成。节点可以是实体,如一个人、一本书等,或是抽象的概念,如人工智能、知识图谱等。边可以是实体的属性…

八股操作系统和计算机网络

5.线程间的同步的方式有哪些&#xff1f; 6.PCB(不熟悉) 进程状态 什么是僵尸进程和孤儿进程&#xff1f; 进程调度算法 死锁的理解 举个发生死锁的例子 解决死锁的方式 内存管理做了哪些事情 什么是内存碎片 常见的内存管理 段表通过什么数据结构实现地址映射 分段机制为什么会…

平板消解加热台-温度均匀,防腐蚀-实验室化学分析

DBF系列防腐电热板 是精致路合金加热板块表面经进口高纯实验级PFATeflon氟塑料防腐不粘处理&#xff0c;专为实验室设计的电加热产品&#xff0c;是样品前处理中&#xff0c;加热、消解、煮沸、蒸酸、赶酸等处理的得力助手。可以满足物理、化学、生物、环保、制药、食品、饮品…

星型、环型、总线型和网状型拓扑结构是什么意思?

拓扑结构&#xff08;Topology&#xff09;是指对象在保持某些基本性质不变的情况下&#xff0c;不考虑距离和角度等几何细节的形状和空间关系。换句话说&#xff0c;拓扑结构研究的是物体在连续变形&#xff08;如拉伸、压缩、扭曲等&#xff09;下保持不变的性质。这一点不太…

黑马头条Minio报错non-xml response from server错误的解决方法

今天在写项目的时候&#xff0c;想测试minio上传文件功能是否正常&#xff0c; 但是每次都出现non-xml response from server的错误。 自己也在网上找了很多解决方法&#xff0c;大部分是说用户名和密码的配置问题&#xff0c;但是检查后发现并没有错误。 最后发现是自己的dock…