|

在 R 中绘制神经网络:通过逐行解释了解神经网络结构(特长:neuralnet)

直接转到 PPT 等。 神经网络 尝试绘制神经网络是否显得过于费时费力? 在本文中,我将为你讲解如何用 R 语言绘制神经网络。我将一步一步、一行一行地为你演示,即使是初学者也能轻松上手。 我将为你演示如何用 R 语言绘制神经网络,并将为你讲解绘制过程中的要点。

什么是神经网络绘图?

绘制神经网络是将我们在机器学习或深度学习中经常遇到的网络结构可视化的过程。神经网络由输入层、隐藏层和输出层组成,每个层都由多个节点(神经元)构成。 将这些连接的神经网络可视化,可以更容易地理解它们是如何处理数据的。

为什么用 R 绘制神经网络?

R 是一款强大的数据分析和可视化工具,其中有多个软件包可以轻松绘制复杂的模型,尤其是神经网络。在本文中,我们将介绍 神经网络软件包只需用 R 语言写一点代码,就能将美丽的神经网络结构可视化。

R 이용 신경망 그리기 패키지 그림

绘制神经网络的 R 代码

现在,让我们来看看用 R 语言绘制神经网络的示例代码。接下来,我将逐行详细解释神经网络的结构是如何绘制的。

#Install 并加载所需的软件包
if(!require("neuralnet")) install.packages("neuralnet")
library(neuralnet)

#生成简单的神经网络数据
set.seed(123)
data <- data.frame(
input1 = runif(100, 0, 1)、
input2 = runif(100, 0, 1)、
output = sample(0:1, 100, replace = TRUE)
)

创建 # 神经网络模型(2 个输入、1 个隐藏层、3 个节点)
nn <- neuralnet(output ~ input1 + input2, data = data, hidden = c(3))

可视化 # 神经网络
plot(nn)

当代码突然出现时,您是否感到过惊慌失措? 在 Windows 上安装 R、RStudio 请查看帖子并尝试运行上面的代码。

代码说明(逐行详细说明)

1. 安装并加载软件包

if(!require("neuralnet")) install.packages("neuralnet")
library(neuralnet)

在本例中,我们将使用 neuralnet 软件包在 R 中绘制神经网络。首先,使用 require() 检查软件包是否已安装,如果没有(!),则使用 install.packages() 安装。 然后,使用 library() 函数加载软件包。 通过该软件包,可以轻松构建和可视化神经网络模型。

2. 生成数据

set.seed(123)
data <- data.frame(
input1 = runif(100, 0, 1)、
input2 = runif(100, 0, 1)、
输出 = sample(0:1, 100, replace = TRUE)
)

set.seed(123):这里我们使用 set.seed() 函数来固定一个随机值。这样可以确保始终生成相同的随机值,从而使运行代码的结果保持一致。这意味着我或你运行的结果都是一样的。

runif(100, 0, 1):生成 100 个介于 0 和 1 之间的随机值。这些值将用作输入,称为 input1、input2。

sample(0:1, 100, replace = TRUE):生成 100 个介于 0 和 1 之间的随机值,并将其设置为输出。输出值是二进制分类问题中常用的值。

data.frame():通过将上面创建的数据分组到一个数据框中,为神经网络模型中使用数据做好准备。创建的数据帧有三列:输入 1、输入 2 和输出。

3. 创建神经网络模型

nn <- neuralnet(output ~ input1 + input2, data = data, hidden = c(3))

neuralnet() 函数用于训练神经网络。 该函数采用公式形式,设置输入(输入 1、输入 2)和输出(输出)。

hidden = c(3) 是设置隐藏层节点数的选项。在这里,我们使用 3 个节点作为隐藏层。虽然增加隐藏层的节点数会增加神经网络的复杂性、 过度拟合因此,正确设置非常重要。

4. 可视化你的神经网络

plot(nn)

plot() 函数可视化生成的神经网络模型。它会绘制输入层、隐藏层和输出层之间的连接结构。通过这种可视化方式,你可以直观地看到数据是如何在神经网络中流动的。运行上面的完整代码后,你可以看到下面的神经网络模型。

신경망 그리기 결과물 그림

神经网络的组成部分

现在,让我们更详细地了解一下神经网络的组成部分。

输入层:接收数据的第一层,每个节点代表输入数据的一个特征。

隐藏层这是输入层和输出层之间的中间层,负责处理数据并通过学习识别模式。隐藏层的节点数量与模型的性能直接相关。

输出层这一层输出最终预测结果,根据问题的不同,预测结果有多种形式。对于二元分类问题,预测结果要么是 0,要么是 1。

绘制神经网络:更好地实现可视化

通过 neuralnet 软件包,可以将基本的神经网络结构可视化,但如果需要更复杂的结构或更多自定义功能,可以使用 DiagrammeR 这样的软件包。该软件包能更直观地显示节点和层之间的连接。

组织起来

现在你已经对如何在 R 中绘制神经网络有了更好的了解,知道了如何设置神经网络的每个组件以及如何将其可视化。 看看上面的代码,尝试绘制自己的神经网络结构,并添加不同的输入和隐藏层!

# 可视化输出说明

  1. 节点:

输入层:有两个输入节点,分别称为输入 1 和输入 2。每个节点接收输入 1 和输入 2,它们是神经网络的输入数据。

隐藏层:中间有三个隐藏节点。这些节点将计算结果传递给输出层,输出层根据输入层传递的数值进行加权。

输出层:最后是代表神经网络预测结果的输出节点。

  1. 连接:

每个输入节点(输入 1 和输入 2)都与隐层中的每个节点相关联。

每个隐藏层节点还与一个输出节点相连,每条线代表它们之间的连接。

连接线上标有权重值。权重是在神经网络训练过程中进行调整的值,表示特定输入对输出的影响程度。

  1. 重量

图中,每条连接线上的数字代表该连接线的权重。

例如,从输入 1 到第一个隐藏节点的连接权重显示为 14.16047。这意味着从输入端 1 输入的数值会乘以这个权重并传递到第一个隐藏节点。

此外,从隐藏节点到输出节点的权重也很重要。例如,从隐藏层到输出节点的一个权重显示为 35.66218。

  1. 偏见:

神经网络可视化图中标有 "1 "的节点是偏置节点。 通过在每一层添加偏置,神经网络可以更灵活地学习数据。偏置节点的输入值始终为 1,并通过在训练过程中调整的权重来处理。

从偏置节点到每个隐藏节点和输出节点的线路上,你会看到蓝色显示的权重值。例如,从第一个偏置节点到第一个隐藏节点的权重为 -29.11053。

  1. 错误和学习步骤:

底部显示错误:9.78749,步骤:8101。

误差表示神经网络在训练过程中尝试优化时产生的误差值。该值越小,说明神经网络的训练效果越好。

步数表示课程结束前的迭代学习步数。在本课程中,您有 8101 个步骤。

  1. 全面解读:

当输入数据(输入 1、输入 2)通过每个节点时,加权转换值会被传递到隐藏层,然后将结果传回输出节点,产生预测结果(输出)。

权重越高,输入值对输出的影响越大,权重为负则表示输入值对输出的影响方向相反。

偏置节点的作用是使特定层的激活函数更加灵活,并提高学习性能。

类似文章