Machine Learning Specialization 学习笔记(3)


前言

博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV1Bq421A74G


一、神经网络

神经网络(Artificial Neural Networks,ANNs)是受人脑结构启发而构建的计算模型,用于模拟大脑神经元网络处理信息的方式。它们是机器学习和深度学习领域的核心技术之一,能够解决多种复杂的模式识别和预测问题。

基本概念

在这里插入图片描述
在这里插入图片描述

基本组成

神经网络由以下基本组件构成:

  1. 神经元(Neurons):网络的基本单元,类似于人脑中的神经元。每个神经元接收输入,进行加权求和,并通过激活函数处理这个求和值来产生输出。
  2. 层(Layers):神经元被组织成层。一个基本的神经网络包括输入层、一个或多个隐藏层以及输出层。
  3. 连接权重(Weights):连接神经元的边具有权重,这些权重在训练过程中学习得到。
  4. 偏置(Biases):每个神经元还可以有一个偏置项,它用来调整神经元的输出。
  5. 激活函数(Activation Functions):用于引入非线性,使得神经网络能够学习和执行更复杂的任务。

工作流程

  1. 前向传播(Forward Propagation):输入数据在网络中从输入层经过隐藏层传递到输出层,每一层的输出成为下一层的输入。
  2. 损失函数(Loss Function):计算模型预测值和真实值之间的差异。
  3. 反向传播(Backpropagation):利用损失函数计算的梯度,通过网络反向传播这些梯度,以更新网络中的权重和偏置。
  4. 优化算法(Optimization Algorithms):如梯度下降(Gradient Descent)及其变体,用于在每次迭代中更新权重,以最小化损失函数。

训练过程

训练神经网络通常涉及以下步骤:

  1. 初始化:随机初始化网络权重和偏置。
  2. 迭代训练:通过多次迭代训练数据集,每次迭代都会进行前向传播和反向传播。
  3. 评估和调整:在验证集上评估模型性能,并根据需要调整模型结构或训练过程。
  4. 测试:使用测试集评估训练好的模型的性能。

类型

  • 前馈神经网络(Feedforward Neural Networks,FNN):最常见的类型,信息只向前流动,没有反馈连接。
  • 卷积神经网络(Convolutional Neural Networks,CNN):特别适合处理图像数据,具有卷积层来捕捉局部特征。
  • 循环神经网络(Recurrent Neural Networks,RNN):适合处理序列数据,如时间序列分析和自然语言处理。
  • 长短期记忆网络(Long Short-Term Memory,LSTM):一种特殊的RNN,能够学习长期依赖关系。

应用举例

在这里插入图片描述

在这里插入图片描述
g->激活函数
在这里插入图片描述
基于TensorFlow的简单dense层
在这里插入图片描述

不同层次特征的学习

第一层:低级特征
边缘和纹理:第一层的卷积核(filters)通常检测图像的基本边缘、线条和简单的纹理。这些特征包括水平、垂直和对角线方向的边缘。
局部感受野:第一层的卷积核通常应用于图像的小局部区域(称为感受野),这使得它们只能提取局部的一些基础特征。

中间层:中级特征
模式和形状:中间层的神经元结合了前几层检测到的低级特征,形成更复杂的模式和形状,如角元素、曲线、简单几何图形。
增大的感受野:随着层数增加,每层的神经元感受的图像区域会变大,即“感受野”会变大。这样它们可以综合前面层次的信息,识别更加复杂的模式。

高级层:高级特征
物体组件和语义特征:在更深的层中,神经网络开始组合之前学习到的复杂模式,识别出具体物体的部分或更抽象的语义特征。例如,一些神经元可能对人脸的某些组件(如眼睛、鼻子)特别敏感。
全图感知:最深的层一般具有最大的感受野,能够感知到整个输入图像的信息,因而能识别出完整的物体或者整个场景。

为什么从基础特征到复杂特征逐渐推进

在多层神经网络中,尤其是卷积神经网络(CNN),特征提取往往是从基础特征到复杂特征逐渐推进。这是因为:

  1. 局部到全局:早期层的卷积滤波器(filters)处理的是图像的小块区域,只能检测出简单的边缘和纹理。随着层数的增加,高层的滤波器能够结合更多早期层的输出,逐渐构建出更复杂的特征,如形状、物体部件,最终形成完整的物体识别。

  2. 逐层组合:每一层的输出是前一层的输入。早期层提取简单的特征,这些特征被传递到后续层,后续层将在此基础上进一步组合和加工这些特征,形成更高级的描述。

  3. 有效特征表征:通过这样的层次化结构,神经网络能有效地表示和处理图像中的信息,从而更好地完成识别任务。从简单到复杂的特征提取过程,使得模型能够理解和处理多种多样的视觉模式,增强了其泛化能力。

什么是感受野

感受野(Receptive Field)是一个神经元在输入图像上“看到”或响应的区域。更简单地说,它指的是输出层的一个特定神经元对应于输入图像的哪些位置。

更简单的解释
  1. 直观理解
    • 小感受野:在神经网络的早期层,每个神经元只对图像的一小块区域负责,就像你用放大镜仅仅看到图像中的非常小的一部分,比如一个小方块的边缘。
    • 大感受野:在后续层,每个神经元能够"看到"更大范围的图像,就像你逐渐放远视角,能看到图像中更大的部分,比如整个形状或物体的一部分。
具体示例

假设你有一个三层卷积神经网络,每一层都有一个3x3的卷积核:

  • 第一层:每个神经元看到3x3的图像区域。此时的感受野是3x3。
  • 第二层:接受第一层3x3区域的输出作为输入,相当于每个第二层的神经元看到了5x5的图像区域(因为第一层看3x3区域的每一个会扩大感受野)。
  • 第三层:这个神经元的感受野会更大,达到7x7。

通过层叠更多层次,每个神经元能够逐渐"感知"到输入图像中更大的区域,最终高层的神经元可以拥有整个图像的全局视角,这使得它们能够识别整体的复杂特征和物体。

总结

从基础特征到复杂特征的逐层推进源自网络各层对信息逐渐复杂和综合的处理方式。感受野是帮助理解这一过程的一个关键概念,它直观描述了每个神经元在输入图像中负责的具体区域。从小感受野到大感受野,使得神经网络能够逐步从细节到整体进行信息处理和特征提取。

二、TensorFlow实现简单神经网络

安装及环境配置

安装TensorFlow的前置:

  • NVIDIA GPU 驱动程序已安装。
  • CUDA Toolkit 和 cuDNN 已安装(版本需要与 TensorFlow 版本兼容)。
  • 也可以一键安装:
pip install tensorflow[and-cuda]

在~/.bashrc文件末尾添加以下内容:(以cuda-12.1为例)

export PATH=/usr/local/cuda-12.1/bin${
   PATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值