查看原文
其他

快速学会一个算法,神经网络!!

程序员小寒 程序员学长
2024-09-13
大家好,我是小寒
今天给大家分享一个超强的算法模型,神经网络
神经网络(Neural Networks)是一种模仿人脑神经元连接模式的计算模型,用于处理复杂的非线性问题。

神经网络由多个简单的计算单元(称为“神经元”)组成,这些神经元通过连接(称为“权重”)形成一个网络。
神经网络特别适合处理复杂的模式识别问题,如图像分类、语音识别和自然语言处理等。

神经网络的结构

神经网络的基本结构包括输入层、隐藏层和输出层:
  1. 输入层

    输入层负责接收原始数据。
    每个输入单元(神经元)对应一个输入特征,例如图像的每个像素点。
  2. 隐藏层

    隐藏层位于输入层和输出层之间,负责对输入数据进行非线性变换和特征提取。
    一个神经网络可以包含一个或多个隐藏层。
    隐藏层中的每个神经元接收前一层神经元的加权输入,并通过激活函数进行处理。
  3. 输出层

    输出层生成神经网络的最终输出,每个输出单元对应一个预测结果,例如分类问题中的类别标签。

神经网络的基本原理

神经网络的基本计算单元是“神经元”(或称为“节点”),其主要工作是接收输入,进行加权求和,并通过激活函数得到输出。

  1. 加权求和

    每个神经元接收前一层神经元传来的输入信号,并与各自的权重相乘,然后求和。
    这个过程可以用一个简单的数学公式表示:

    其中, 是输入, 是对应的权重, 是偏置项, 是加权求和的结果。
  2. 激活函数

    为了引入非线性特性,加权求和后的结果 z 会通过一个激活函数进行处理。
    常用的激活函数包括:
  • Sigmoid 函数,将输入值映射到0和1之间

    公式为:

  • Tanh 函数,将输入值映射到-1和1之间

    公式为:

  • ReLU 函数

    公式为:

  • 前向传播

    在神经网络的前向传播(forward propagation)过程中,输入数据依次通过各个层的神经元,逐层计算输出,直到到达输出层,生成最终的预测结果。
  • 损失函数

    神经网络的预测结果与实际标签之间的误差通过损失函数来度量。
    常见的损失函数有均方误差(MSE)和交叉熵损失(Cross-Entropy Loss)。
  • 反向传播和梯度下降

    为了最小化损失函数的值,神经网络通过反向传播(backpropagation)算法来更新权重。


    反向传播算法利用链式法则计算每个权重对损失函数的梯度,然后使用梯度下降法更新权重,以不断减少预测误差。


    梯度下降的公式如下:

    其中, 是学习率, 是权重 对损失函数的偏导数。
  • 案例分享

    下面是一个使用 TensorFlow 框架构建简单神经网络进行手写数字识别的示例代码。

    import tensorflow as tf
    from tensorflow.keras import layers, models
    from tensorflow.keras.datasets import mnist
    from tensorflow.keras.utils import to_categorical

    # 加载 MNIST 数据集
    (x_train, y_train), (x_test, y_test) = mnist.load_data()

    # 数据预处理
    x_train = x_train.reshape((x_train.shape[0], 28 * 28)).astype('float32') / 255
    x_test = x_test.reshape((x_test.shape[0], 28 * 28)).astype('float32') / 255

    # 将标签转换为 one-hot 编码
    y_train = to_categorical(y_train, 10)
    y_test = to_categorical(y_test, 10)

    # 构建神经网络模型
    model = models.Sequential()
    model.add(layers.Dense(128, activation='relu', input_shape=(28 * 28,)))
    model.add(layers.Dense(10, activation='softmax'))

    # 编译模型
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])

    # 训练模型
    model.fit(x_train, y_train, epochs=5, batch_size=128, validation_split=0.2)

    # 评估模型
    test_loss, test_acc = model.evaluate(x_test, y_test)
    print(f"Test accuracy: {test_acc:.4f}")

    # 预测示例
    predictions = model.predict(x_test)
    print(f"Prediction for the first test image: {predictions[0].argmax()}")

    最后



    今天的分享就到这里。如果觉得近期的文章不错,请点赞,转发安排起来。‍‍欢迎大家进高质量 python 学习群

    「进群方式:加我微信,备注 “python”」



    往期回顾


    Fashion-MNIST 服装图片分类-Pytorch实现

    python 探索性数据分析(EDA)案例分享

    深度学习案例分享 | 房价预测 - PyTorch 实现

    万字长文 |  面试高频算法题之动态规划系列

    面试高频算法题之回溯算法(全文六千字)  

        



    如果对本文有疑问可以加作者微信直接交流。

    继续滑动看下一个
    程序员学长
    向上滑动看下一个

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存