• 金融统计学方法:神经网络


    目录

    1.神经网络

    2.深度神经网络

    3.案例分析


    1.神经网络

    神经网络是模仿人脑神经元工作原理而设计的一种算法模型。在一个基本的神经网络中,存在多个“神经元”或称为“节点”,这些节点被组织成多个层次。每个节点都接收前一层的输入,进行加权求和,并通过一个激活函数产生输出。

    神经网络主要由以下几个部分组成:

    1. 输入层:这是神经网络的第一层,用于接收外部数据。
    2. 隐藏层:位于输入层和输出层之间的层,可以有一个或多个。
    3. 输出层:将神经网络的结果输出给外部环境。
    4. 权重与偏置:每个连接都有一个权重,每个节点都有一个偏置。
    5. 激活函数:决定神经元是否应该被“激活”或输出其值。

    2.深度神经网络

    深度神经网络(DNN)基本上是一个有很多隐藏层的神经网络。这些额外的层使得DNN能够学习和表示更复杂的特征和模式。简而言之,一个“深”的网络意味着它有更多的层次和更多的能力,但同时也意味着它需要更多的数据和计算资源来进行训练。

    深度学习的兴起归功于几个关键因素:

    • 大数据:深度网络需要大量的训练数据。
    • 计算能力的增强:如GPU的出现,使得大规模矩阵操作更为高效。
    • 算法进步:如ReLU激活函数、Dropout等技术的引入,帮助解决梯度消失和过拟合问题。

    3.案例分析

    下面利用神经网络来解决XOR问题。

    XOR问题是指异或逻辑运算,对于两个二进制输入,XOR运算的定义如下:

     从上面的表格可以看出,只有当两个输入不同时,输出才为1;如果两个输入相同,则输出为0。

    XOR问题在神经网络领域的重要性在于:单个感知机(或称为线性单元)不能解决XOR问题,因为XOR函数不是线性可分的。这意味着你不能画一条直线来区分输出为1和输出为0的数据点。但是,使用一个具有至少一个隐藏层的多层神经网络可以解决XOR问题,这证明了引入隐藏层的重要性和多层神经网络的能力。

    首先绘制XOR数据点:

    1. import matplotlib.pyplot as plt
    2. # XOR 数据
    3. X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
    4. y = np.array([[0], [1], [1], [0]])
    5. plt.scatter(X[y[:,0] == 0][:, 0], X[y[:,0] == 0][:, 1], color='blue', label='0')
    6. plt.scatter(X[y[:,0] == 1][:, 0], X[y[:,0] == 1][:, 1], color='red', label='1')
    7. plt.xlabel('Input A')
    8. plt.ylabel('Input B')
    9. plt.legend()
    10. plt.title('XOR Data Points')
    11. plt.show()

    结果图;

    接下来利用神经网络进行预测:

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. # 定义Sigmoid函数及其导数
    4. def sigmoid(x):
    5. return 1 / (1 + np.exp(-x))
    6. def sigmoid_derivative(x):
    7. return x * (1 - x)
    8. # 定义神经网络结构
    9. input_neurons = 2
    10. hidden_neurons = 4
    11. output_neurons = 1
    12. # 初始化权重和偏置
    13. np.random.seed(0)
    14. input_hidden_weights = np.random.rand(input_neurons, hidden_neurons)
    15. hidden_output_weights = np.random.rand(hidden_neurons, output_neurons)
    16. hidden_bias = np.random.rand(1, hidden_neurons)
    17. output_bias = np.random.rand(1, output_neurons)
    18. # 定义训练数据 (XOR problem)
    19. X = np.array([
    20. [0, 0],
    21. [0, 1],
    22. [1, 0],
    23. [1, 1]
    24. ])
    25. y = np.array([
    26. [0],
    27. [1],
    28. [1],
    29. [0]
    30. ])
    31. learning_rate = 0.5
    32. epochs = 10000
    33. errors = []
    34. # 训练神经网络
    35. for epoch in range(epochs):
    36. # 前向传播
    37. hidden_layer_input = np.dot(X, input_hidden_weights) + hidden_bias
    38. hidden_layer_output = sigmoid(hidden_layer_input)
    39. output_layer_input = np.dot(hidden_layer_output, hidden_output_weights) + output_bias
    40. predicted_output = sigmoid(output_layer_input)
    41. # 计算误差
    42. error = y - predicted_output
    43. # 记录MSE
    44. mse = np.mean(np.square(error))
    45. errors.append(mse)
    46. # 反向传播
    47. d_predicted_output = error * sigmoid_derivative(predicted_output)
    48. error_hidden_layer = d_predicted_output.dot(hidden_output_weights.T)
    49. d_hidden_layer = error_hidden_layer * sigmoid_derivative(hidden_layer_output)
    50. # 更新权重和偏置
    51. hidden_output_weights += hidden_layer_output.T.dot(d_predicted_output) * learning_rate
    52. output_bias += np.sum(d_predicted_output, axis=0, keepdims=True) * learning_rate
    53. input_hidden_weights += X.T.dot(d_hidden_layer) * learning_rate
    54. hidden_bias += np.sum(d_hidden_layer, axis=0, keepdims=True) * learning_rate
    55. print(predicted_output)
    56. # 绘制误差曲线
    57. plt.plot(errors)
    58. plt.title('Error (MSE) over Epochs')
    59. plt.xlabel('Epochs')
    60. plt.ylabel('Mean Squared Error (MSE)')
    61. plt.show()

    预测结果:

    [[0.01707759]
     [0.98487483]
     [0.98482722]
     [0.01675426]]

    误差曲线如下;

    可见,随着迭代次数的增加, 均方误差MSE越来越小,最终收敛到0。


  • 相关阅读:
    CUDA 编程简介
    想知道怎么把过曝的图片进行修复?这些方法可以做到
    基于Java毕业设计学校图书馆管理系统源码+系统+mysql+lw文档+部署软件
    linux同步搭建多台服务器
    08. Java内存模型(JMM)
    LocalDateTime、LocalDate、Date的相互转换
    Vue错误记录
    Unirech阿里云国际版代充-如何通过 SDK 使用海外云服务器ECS实例
    干货 | Elasticsearch 8.X 实战视频合集(80 小时+)
    项目进度管理
  • 原文地址:https://blog.csdn.net/m0_64087341/article/details/133433221