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

.

.

.

.

.

.

.

.

.纯干货

.

.

.

.

.

.

 目录

前馈神经网络

基本原理

公式解释

一个示例

卷积神经网络

基本原理

公式解释

一个示例

循环神经网络

基本原理

公式解释

一个案例

长短时记忆网络

基本原理

公式解释

一个示例

自注意力模型

基本原理

自注意力机制

具体步骤

公式解释

一个案例

生成对抗网络

基本原理

公式解释

一个案例

最后


人工神经网络(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.mfbz.cn/a/713181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入探讨限流算法:固定窗口、滑动窗口、漏桶与令牌桶原理及应用场景

固定窗口算法 简单粗暴,但有临界问题: 滑动窗口算法 滑动窗口通俗来讲是一种流量控制技术,描述接收方TCP数据报缓冲区大小的数据。发送方根据这个数据计算最大可发送的数据量。滑动窗口协议是TCP使用的一种流量控制方法,允许发送…

如何从印刷体的图片中把手写体部分统统去掉?--免费途径

AI图像处理技术 我是从国外某个网站上找到在线AI免费credit的处理方式的。国内的基本没有全功能试用、或者即使收费也不好用。 国内的差距主要是:1、对图片分辨率和大小有更多限制,即使收费用户也是;2、需要安装app之类,然后连线…

给类设置serialVersionUID

第一步打开idea设置窗口(setting窗口默认快捷键CtrlAltS) 第二步搜索找到Inspections 第三步勾选主窗口中Java->Serializations issues->下的Serializable class without serialVersionUID’项 ,并点击“OK”确认 第四步鼠标选中要加…

智能体(Agent)实战——从gpts到auto gen

一.GPTs 智能体以大模型作为大脑,同时配备技能,使其能够完成具体的任务。同时,为了应用于垂直领域,我们需要为大模型定义一个角色,并构建知识库。最后,定义完整的流程,使其完成整个任务。以组会…

【回文 马拉车】214. 最短回文串

本文涉及知识点 回文 马拉车 LeetCode214. 最短回文串 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入:s “aacecaaa” 输出:“aaacecaaa” 示…

从最小二乘法的角度来理解卡尔曼滤波(1)

从最小二乘法的角度来理解卡尔曼滤波(1) flyfish 假设你有一堆数据点,比如在一个二维平面上有很多点。你想找到一条直线,能够尽可能接近这些点。这条直线可以用一个方程来表示:y mx b,其中 m 是斜率&am…

Nginx - 反向代理、负载均衡、动静分离(案例实战分析)

目录 Nginx 开始 概述 安装(非 Docker) 配置环境变量 常用命令 配置文件概述 location 路径匹配方式 配置反向代理 实现效果 准备工作 具体配置 效果演示 配置负载均衡 实现效果 准备工作 具体配置 实现效果 其他负载均衡策略 配置动…

MATLAB直方图中bin中心与bin边界之间的转换

要将 bin 中心转换为 bin 边界,请计算 centers 中各连续值之间的中点。 d diff(centers)/2; edges [centers(1)-d(1), centers(1:end-1)d, centers(end)d(end)];要将 bin 边界转换为bin 中心 bincenters binedges(1:end-1)diff(binedges)/2;

16.大模型分布式训练框架 Microsoft DeepSpeed

微调、预训练显存对比占用 预训练LLaMA2-7B模型需要多少显存? 假设以bf16混合精度预训练 LLaMA2-7B模型,需要近120GB显存。即使A100/H100(80GB)单卡也无法支持。 为何比 QLoRA多了100GB?不妨展开计算下显存占用&…

文章MSM_metagenomics(五):共现分析

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 本教程是使用一个Python脚本来分析多种微生物(即strains, species, genus等&…

维度建模中的事实表设计原则

维度建模是一种数据仓库设计方法,其核心是围绕业务过程建立事实表和维度表。事实表主要存储与业务过程相关的度量数据,而维度表则描述这些度量数据的属性。 以下是设计事实表时需要遵循的几个重要原则,来源于《维度建模》那本书上&#xff0…

13.docker registry(私有仓库)

docker registry(私有仓库) 1.从公有仓库中下载镜像比较慢 ,比如docker run执行一个命令假设本地不存在的镜像,则会去共有仓库进行下载。 2.如果要是2台机器之间进行拷贝,则拷贝的是完整的镜像更消耗空间。 3.如果1个…

python数据分析-糖尿病数据集数据分析预测

一、研究背景和意义 糖尿病是美国最普遍的慢性病之一,每年影响数百万美国人,并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病,其中个体失去有效调节血液中葡萄糖水平的能力,并可能导致生活质量和预期寿命下降。。。。 …

docker 简单在线安装教程

1、配置阿里镜像源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 2、指定版本安装docker 本次制定安装 docker 服务版本、客户端版本都为: 19.03.14-3.el7 yum -y install docker-ce-19.03.14-3.e…

【python】tkinter GUI开发: 多行文本Text,单选框Radiobutton,复选框Checkbutton,画布canvas的应用实战详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【Spine学习06】之IK约束绑定,制作人物待机动画,图表贝塞尔曲线优化动作

引入IK约束的概念: 约束目标父级 被约束骨骼子集 这样理解更好,约束目标可以控制被约束的两个骨骼运作 IK约束绑定过程中呢,如果直接绑定最下面的脚掌骨骼会发生偏移,所以在开始处理IK之前,需要先设置一个ROOT结点下的…

采煤vr事故灾害应急模拟救援训练降低生命财产损失

在化工工地,设备繁多、环境复杂,潜藏着众多安全隐患,稍有不慎便可能引发安全事故。为了保障工地的安全,我们急需一套全面、高效的安全管理解决方案。web3d开发公司深圳华锐视点研发的工地安全3D模拟仿真隐患排查系统,正…

hugo-magic主题使用教程(一)

前提条件 以下教程以windows10为例操作终端使用git bash魔法上网的前提下 下载hugo https://github.com/gohugoio/hugo/releases/download/v0.127.0/hugo_extended_0.127.0_windows-amd64.zip解压到任意目录,然后将目录添加到系统环境变量 如图 (windows)打开cmd 输入 hugo …

Superset 二次开发之Git篇 git cherry-pick

Cherry-Pick 命令是 Git 中的一种功能,用于将特定的提交(commit)从一个分支应用到另一个分支。它允许你选择性地应用某些提交,而不是合并整个分支。Cherry-Pick 非常适合在需要将特定更改移植到其他分支时使用,例如从开…

为什么用SDE(随机微分方程)来描述扩散过程【论文精读】

为什么用SDE(随机微分方程)来描述扩散过程【论文精读】 B站视频:为什么用SDE(随机微分方程)来描述扩散过程 论文:Score-Based Generative Modeling through Stochastic Differential Equations 地址:https://doi.org/10.48550/arXiv.2011.13…