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

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

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账号
感谢订阅专栏 三连文章

相关推荐
聆风吟º1 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
AI_56781 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子2 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能2 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
人工不智能5772 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
h64648564h3 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
心疼你的一切3 小时前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
小鸡吃米…4 小时前
机器学习的商业化变现
人工智能·机器学习
学电子她就能回来吗5 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
爱吃泡芙的小白白5 小时前
突破传统:CNN卷积层(普通/空洞)核心技术演进与实战指南
人工智能·神经网络·cnn·卷积层·空洞卷积·普通卷积