【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

【机器学习】从零开始理解深度学习------揭开神经网络的神秘面纱

1. 引言

深度学习是机器学习的一个重要分支,通过多层神经网络处理复杂数据,广泛应用于图像识别、自然语言处理等领域。我们将在这篇文章中揭开深度学习和神经网络的神秘面纱。

2. 什么是神经网络?

神经网络由大量"神经元"组成,模拟生物神经元的连接。它通过训练数据调整权重来学习复杂模式。

神经网络的代码示例

我们用 Keras 构建一个简单的神经网络模型:

python 复制代码
from keras.models import Sequential
from keras.layers import Dense

# 创建一个简单的神经网络模型
model = Sequential()
model.add(Dense(32, input_dim=8, activation='relu'))  # 输入层和第一个隐藏层
model.add(Dense(16, activation='relu'))  # 第二个隐藏层
model.add(Dense(1, activation='sigmoid'))  # 输出层

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

# 打印模型结构
model.summary()

3. 前馈神经网络 (Feedforward Neural Network, FNN)

前馈神经网络是最简单的网络架构,数据从输入层单向流动到输出层。

示例代码:

复制代码
python复制代码import numpy as np

# 输入数据
X = np.array([[0,0], [0,1], [1,0], [1,1]])
y = np.array([[0], [1], [1], [0]])  # XOR 问题

# 前馈网络计算
model = Sequential()
model.add(Dense(4, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['binary_accuracy'])

# 训练模型
model.fit(X, y, epochs=1000, verbose=0)

# 预测输出
print(model.predict(X))

4. 反向传播与梯度下降

反向传播算法用于计算误差并更新神经网络中的权重。梯度下降算法则是通过最小化损失函数来优化权重。

示例代码:

复制代码
python复制代码# 模型编译时指定使用反向传播和梯度下降算法
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# 训练模型时,反向传播自动发生
model.fit(X, y, epochs=100)

5. 深度神经网络 (Deep Neural Network, DNN)

深度神经网络拥有多层隐藏层,能够学习到复杂的特征。

示例代码:

复制代码
python复制代码# 深度神经网络
model = Sequential()
model.add(Dense(64, input_dim=8, activation='relu'))  # 第一层
model.add(Dense(32, activation='relu'))  # 第二层
model.add(Dense(16, activation='relu'))  # 第三层
model.add(Dense(1, activation='sigmoid'))  # 输出层

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

# 训练模型
model.fit(X, y, epochs=100)

6. 常见激活函数

神经网络通过激活函数为网络引入非线性能力。

示例代码:不同激活函数的应用

复制代码
python复制代码# 使用 Sigmoid 激活函数
model.add(Dense(64, activation='sigmoid'))

# 使用 Tanh 激活函数
model.add(Dense(64, activation='tanh'))

# 使用 ReLU 激活函数
model.add(Dense(64, activation='relu'))

7. 优化算法

优化算法决定了权重更新的方式,常用的优化算法包括梯度下降和 Adam。

示例代码:Adam 优化器

复制代码
python复制代码# 使用 Adam 优化器
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 使用 SGD 优化器
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])

8. 深度学习框架介绍

现代深度学习依赖于强大的框架,如 TensorFlow 和 PyTorch。下面是使用 TensorFlow 构建一个简单模型的示例。

示例代码:使用 TensorFlow 构建模型

复制代码
python复制代码import tensorflow as tf

# 创建一个简单的深度学习模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

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

# 打印模型结构
model.summary()

9. 应用案例

图像分类:

深度学习在图像分类中广泛应用。以下是使用 Keras 进行图像分类的代码。

示例代码:简单的图像分类网络

复制代码
python复制代码from keras.datasets import mnist
from 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
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 构建模型
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(Dense(10, activation='softmax'))

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

# 训练模型
model.fit(X_train, y_train, epochs=5, batch_size=128, verbose=1)

# 评估模型
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"测试准确率: {test_acc}")

10. 总结与未来展望

通过本文,我们从基础开始理解了神经网络与深度学习的核心概念。随着计算能力的提升和算法的改进,深度学习的未来前景广阔。未来,我们可以期待深度学习在更多领域取得突破,尤其是在医疗、金融和自动驾驶等领域。

11. 参考资料

12.使用机器学习分析CSDN热榜

  • 吃枣药丸

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个 吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦

承接毕设辅导,代码开发等

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号
更多专栏:

掘金账号 CSDN账号
感谢订阅专栏 三连文章

相关推荐
式5162 分钟前
线性代数(五)向量空间与子空间
人工智能·线性代数·机器学习
江上鹤.1486 小时前
Day40 复习日
人工智能·深度学习·机器学习
行如流水7 小时前
BLIP和BLIP2解析
深度学习
cskywit8 小时前
MobileMamba中的小波分析
人工智能·深度学习
HyperAI超神经8 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
会挠头但不秃11 小时前
深度学习(4)卷积神经网络
人工智能·神经网络·cnn
L.fountain11 小时前
图像自回归生成(Auto-regressive image generation)实战学习(一)
人工智能·深度学习·学习·计算机视觉·图像自回归
لا معنى له13 小时前
学习笔记:卷积神经网络(CNN)
人工智能·笔记·深度学习·神经网络·学习·cnn
资源补给站13 小时前
论文13 | Nature: 数据驱动的地球系统科学的深度学习和过程理解
人工智能·深度学习