当前位置: 首页 > news >正文

李宏毅机器学习课程知识点摘要(6-13集)

 pytorch简单的语法和结构

dataset就是数据集,dataloader就是分装好一堆一堆的

他们都是torch.utils.data里面常用的函数,已经封装好了

下面的步骤是把数据集读进来

这里是读进来之后,进行处理

声音信号,黑白照片,红绿蓝彩色照片

运算

转置

移除掉某个维度

合并起来成一个,沿着某一个维度去合并

x.shape和x.dtype

运算:

行列式,所以w^T自动为32x64,这样j与i等,可以变化形状

一个神经网络的过程

逻辑回归在神经网络中的作用

在神经网络学习的背景下,逻辑回归(Logistic Regression)是一个非常重要的基础模型,尤其是在二分类任务中。神经网络本质上是多个层次的复杂逻辑回归模型,因此理解逻辑回归对于理解神经网络的工作原理至关重要。本文将详细介绍逻辑回归在神经网络中的作用及其相关概念。

1. 逻辑回归与神经网络的关系

神经网络的核心是对输入数据进行加权求和,并通过激活函数(如 Sigmoid、ReLU 等)进行处理,从而得到最终的预测结果。逻辑回归可以看作是一个简单的神经网络,只有一个输入层和一个输出层,且激活函数通常是 Sigmoid 函数。

逻辑回归的数学表达式

逻辑回归模型的输出通过 Sigmoid 函数将线性组合的输入映射到 [0, 1] 之间。其数学表达式为:

\[
y = \sigma(z) = \frac{1}{1 + e^{-z}}
\]

其中,\( z = w_0 + w_1 x_1 + w_2 x_2 + \dots + w_n x_n \) 是输入特征的加权和(类似于神经网络中的线性变换)。这个输出是一个概率值,表示预测属于正类(1)的概率。如果这个概率大于 0.5,我们通常预测为正类(1),否则为负类(0)。

2. 神经网络中的逻辑回归

在神经网络中,Sigmoid 函数作为激活函数,通常用于二分类问题。网络中的单个神经元(即一层)可以看作是一个逻辑回归模型。多个神经元层级组合起来,就构成了一个多层神经网络。因此,理解逻辑回归的工作原理对于理解神经网络的运作至关重要。

神经网络中的 Sigmoid 激活函数

在神经网络中,Sigmoid 函数用于将每个神经元的输出映射到 [0, 1] 区间,因此非常适合处理二分类问题。例如,神经网络的输出层可以使用 Sigmoid 激活函数来输出每个类的概率,从而决定最终的类别。

Sigmoid 激活函数公式

\[
\sigma(z) = \frac{1}{1 + e^{-z}}
\]

其中,\( z = w_0 + w_1 x_1 + w_2 x_2 + \dots + w_n x_n \) 是输入特征的线性组合。

输出值的范围是 0 到 1,表示某一类别的概率。

为什么使用 Sigmoid?

Sigmoid 函数的输出是一个概率值,这使得它特别适合二分类问题。在神经网络中,使用 Sigmoid 激活函数后,输出值可以被解释为样本属于正类(1)的概率,进一步帮助我们做出分类决策。

3. 神经网络的训练与逻辑回归

神经网络的训练过程与逻辑回归类似,都是通过优化算法(例如梯度下降)来调整模型参数,以最小化损失函数。对于二分类问题,常见的损失函数是二元交叉熵(Binary Cross-Entropy),它本质上与逻辑回归中的对数损失函数(Log-Loss)相同。

训练步骤(逻辑回归与神经网络的相似性)

1. **前向传播**:计算预测值,首先通过线性变换计算 \( z \),然后通过激活函数(如 Sigmoid)得到预测概率。

2. **计算损失**:使用损失函数(如交叉熵损失)计算预测与实际标签之间的误差。

3. **反向传播**:根据损失函数的梯度,通过反向传播调整权重,最小化误差。

在神经网络中,尽管模型更复杂,但基础的逻辑回归思想仍然存在:通过优化损失函数调整模型参数,逐步减少预测误差。

4. 神经网络的多层扩展

神经网络通过多个隐藏层和神经元的组合,能够捕捉数据中的复杂模式和非线性关系。逻辑回归是一个线性模型,适合简单的二分类问题。而神经网络通过多层的非线性变换,能够处理更加复杂的分类任务。

尽管神经网络的每一层都可以看作是逻辑回归的扩展,但通过增加更多的层次和激活函数,神经网络能够表示更加复杂的决策边界,从而提升分类的准确性。

5. 总结

- 逻辑回归是神经网络的一个基础构建块,尤其在二分类问题中,神经网络的输出层通常使用 Sigmoid 激活函数来实现类似于逻辑回归的操作。
- 神经网络通过多个层次和神经元的组合,扩展了逻辑回归的能力,能够处理更加复杂的非线性分类问题。
- 训练过程在神经网络中与逻辑回归类似,都是通过优化损失函数来调整模型的参数,最小化预测误差。
 

 一个神经元指的是什么?

在神经网络中,神经元(Neuron)是网络中的基本计算单元,类似于人脑中的神经细胞。它的主要作用是接收输入信号,进行加权求和,经过激活函数处理后输出结果。每个神经元通过与其他神经元连接,传递信息并进行计算,从而共同完成更复杂的任务。

一个神经元的基本结构:

1. 输入(Input)

神经元的输入来自上一层的神经元输出,或者是原始数据(在输入层)。每个输入 \( x_i \) 对应一个权重 \( w_i \)。

2. 加权和(Weighted Sum)

神经元会对每个输入进行加权求和,得到一个总的加权和 \( z \):

\[
z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b
\]

其中,\( x_i \) 是输入值,\( w_i \) 是对应的权重,\( b \) 是偏置(Bias)。

3. 激活函数(Activation Function)

激活函数 \( f(z) \) 对加权和 \( z \) 进行处理,产生神经元的输出。这一步引入了非线性特征,使神经网络能够学习和表示复杂的模式。常见的激活函数包括:

- **Sigmoid**:
  
  \[
  f(z) = \frac{1}{1 + e^{-z}}
  \]

- **ReLU**:

  \[
  f(z) = \max(0, z)
  \]

- **Tanh**:

  \[
  f(z) = \tanh(z)
  \]

4. 输出(Output)

激活函数的输出会作为该神经元的输出,并传递到下一层的神经元。

形象比喻:

你可以把神经元想象成一个“计算节点”,它从多个输入信号中加权计算一个结果,经过激活函数的处理后,输出一个值,这个值决定了下一层神经元的输入。

例子:

假设我们有一个简单的神经元,接收两个输入 \( x_1 \) 和 \( x_2 \),其对应的权重是 \( w_1 \) 和 \( w_2 \),偏置为 \( b \)。神经元的计算过程如下:

1. 计算加权和:

\[
z = w_1 x_1 + w_2 x_2 + b
\]

2. 使用激活函数(假设使用 Sigmoid):

\[
\text{output} = \sigma(z) = \frac{1}{1 + e^{-z}}
\]

3. 输出值作为下一个神经元的输入,或作为网络最终输出。

总结:

神经网络中的一个神经元是一个处理单元,它通过接收多个输入,进行加权求和,再通过激活函数产生输出。多个神经元组成网络,可以学习数据中的复杂模式,执行分类、回归等任务。

线性部分与非线性部分

线性部分(加权和)和非线性部分(Sigmoid)是神经元计算的两个连续步骤:

- **线性部分**:是神经元对输入进行加权平均,计算出一个值。
- **非线性部分**:是将该值通过激活函数(如 Sigmoid)进行转换,增加非线性特性。
 

最简单的一种神经网络:前馈神经网络feedforward

前馈神经网络(Feedforward Neural Network,FNN)是最基础的人工神经网络类型。它由若干层神经元组成,输入数据从网络的输入层开始,逐层通过隐藏层传递,最后到达输出层,然后输出结果。整个过程没有反馈或循环路径,即信息只能沿着网络的一个方向流动。

实际上function set是一直在做的,只不过做成neural network的时候会很大

写成矩阵运算:Matrix Operation

通过每一层的神经元计算向前

softmax是归一化

在最后一个output那里把输出结果归一化

output设成10维,每一维对应一个数字;input是256维,即所有的方框;中间多少是自己设

换个角度,原来的时候我们需要做feature work,也就是提取特征的工作。而在这里,我们不需要提取,知道输入和输出就可以了,中间怎么做的我们并不知道

他并不一定真的好用,只是把一个问题转化为了另一个问题

在语音识别和图像识别,deep learning是好的,因为这个在人的大脑中太潜意识了,我们不知道什么是好的feature

deep learning:瞎试,看哪个路径效果好。这不就是炼丹然后放着放着试剂突然碰出来了?

如果是nlp的话,实际上效果不显著,因为语法层面人还是能够划分的比较鲜明的,比如词性感情等等

那么,上面的都是一个接着一个的,我们能不能乱写呢?2连到4这样,是可以的。卷积:convolutional neural network

一个完整的deep learning需要几步?

第一步就是前面的,function set

第二步就是loss

第三步是sick a best one

所以市面上的模型主要就是在算微分,就是求偏导那一步,帮我们做了

最后提到了deep learning 和 fat learning,本质还是受制于算力,不然直接遍历了都不需要用微分找loss最低点

相关文章:

李宏毅机器学习课程知识点摘要(6-13集)

pytorch简单的语法和结构 dataset就是数据集,dataloader就是分装好一堆一堆的 他们都是torch.utils.data里面常用的函数,已经封装好了 下面的步骤是把数据集读进来 这里是读进来之后,进行处理 声音信号,黑白照片,红…...

003 STM32基础、架构以及资料介绍——常识

注: 本笔记参考学习B站官方视频教程,免费公开交流,切莫商用。内容可能有误,具体以官方为准,也欢迎大家指出问题所在。 01什么是STM32(宏观) STM32属于一个微控制器,自带了各种常用通…...

【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化

【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化 目录 文章目录 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数:★★★★☆ …...

开源可视化工具对比:JimuReport VS DataEase

在当今数据驱动的时代,高效的数据可视化工具成为企业洞察业务、做出决策的关键利器。那对于企业来讲如何选择BI产品呢? 在开源可视化工具的领域中,JimuReport和DataEase 以其独特的优势脱颖而出,究竟谁更胜一筹呢?让我…...

2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究

复杂场景下水下图像增强技术的研究 对于海洋勘探来说,清晰、高质量的水下图像是深海地形测量和海底资源调查的关键。然而,在复杂的水下环境中,由于光在水中传播过程中的吸收、散射等现象,导致图像质量下降,导致模糊、…...

shell与QQ邮箱的连接

1.下载软件:yum install s-nail 2.配置文件:vim /etc/s-nail.rc 末尾添加此三行,加入QQ邮箱和验证码 3.验证码位于QQ邮箱安全管理内,进行复制粘贴 4.测试发消息给本地邮箱:echo "要发送的内容" | mail …...

11.21 深度学习-tensor常见操作

import torch from PIL import Image from torchvision import transforms # 获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的 # 我们可以把单个元素tensor转换为Python数值,这是非常常用的操作 # tensor 里面超过了1个数字就不行 def g…...

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

🎁个人主页:我们的五年 🔍系列专栏:MySQL课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 MySQL在Centos 7环境下的安装: 卸载…...

基于官网的Vue-router安装(2024/11)

!!!首先声明,官网很重要。其次,不知道为啥,我不会安装时看不懂官网,会了之后就能看懂了。 官网地址:https://router.vuejs.org/zh/guide/ 1.npm安装 npm install vue-router4 官方貌…...

未来已来:少儿编程竞赛聚焦物联网,激发创新潜力

随着人工智能与物联网技术(IoT)的快速发展,少儿编程教育正在迎来新的变革浪潮。近年来,各类少儿编程竞赛纷纷增加了物联网相关主题,要求学生结合编程知识和硬件设备设计智能家居、智慧城市等创新项目。这一趋势不仅丰富…...

archlinux安装waydroid

目录 参考资料 注意 第一步切换wayland 第二步安装binder核心模组 注意 开始安装 AUR安裝Waydroid 启动waydroid 设置网络(正常的可以不看) 注册谷歌设备 安装Arm转译器 重启即可 其他 参考资料 https://ivonblog.com/posts/archlinux-way…...

Oralce数据库巡检SQL脚本

文章目录 Oralce数据库巡检SQL脚本1 检查表空间使用情况2 检查是否有 offline 状态的表空间3 在线日志是否存在小于 50M 的及状态不正常4 检查锁阻塞5 查看是否有僵死进程6 检查是否有失效索引7 检查不起作用的约束8 缓冲区命中率9 数据字典命中率10 库缓存命中率11 内存中的排…...

CentOS使用中遇到的问题及解决方法

一、CentOS 7网络配置(安装后无法联网问题) 现象说明 在安装CentOS系统后,有可能出现无法联网的问题,虚拟机中的网络配置并没有问题,而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络,因…...

ThinkPad t61p 作SMB服务器,打印服务器,pc ,android ,ipad利用此服务器互传文件

1.在t61p上安装win7 2,配置好smb 服务 3.再安装好打印驱动程序 4.pc与win7利用系统的网络互相发现,映射为硬盘使用。 5.android,ipad安装ES文件浏览器访问win7 共享文件夹,互传文件。 6.android手机安装FE文件浏览器,可以利用花生壳外网…...

php:使用Ratchet类实现分布式websocket服务

一、前言 最近需要做一个有关聊天的小程序,逻辑很简单,所以不打算用Swoole和workerman之类的,最后选择了Ratchet,因为简单易用,适合小型websocket服务。 二、问题 但是目前我的项目是分布式环境,统一通过Ng…...

储能场站安全风险挑战

电化学储能目前最大的痛点问题就是安全问题,制约了储能行业的发展。 首先:锂作为最活泼的金属加上有机溶剂的电解液,安全性天生就差。基因不行。 其次储能系统的BMS对电池管理相对粗放,不足以保证锂电池的安全运行。 当前储能产业…...

Ubuntu系统为同一逻辑网口配置不同网段的IP

近期遇到一个问题:机载计算机的载版上有两个网口,但是这两个网口本质上是一个独立网口一个交换机,即对于机载计算机而言这两个物理网口是同一个逻辑网口。但是我需要将这两个网口分别连接到两个设备,并配置不同网段的IP&#xff0…...

MySQL出现Waiting for table metadata lock的原因以及解决方法(已亲测)

参考:MySQL出现Waiting for table metadata lock的原因以及解决方法 - digdeep - 博客园 当对表执行truncate\drop 操作时,会出现一直处于等待的状态,通过show processlist可以看到TableA停滞在Waiting for table metadata lock的状态。kill…...

学会Lambda,让程序Pythonic一点

Lambda是Python里的高阶用法,要把代码写得Pythonic,就需要了解这些高阶用法,想说自己是一名真正的Python程序员,先要把代码写得Pythonic。 今天聊下Lambda的用法,写篇简短的用法说明。 Lambda是匿名函数的意思&#…...

GDPU 信息安全 期末复习

文章目录 第一章 绪论✅ 单选题✅ 简答题6. 假定你是单位的安全主管,为了提高单位的网络安全性,在制定单位的安全保障方案时,有哪些措施(包括技术和非技术的)?9. 有人说只要我有足够多的钱,就可…...

Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程

在 Kubernetes 中,使用 Token 认证是一种常见的客户端身份验证方式,尤其适用于 ServiceAccount。以下是详细的步骤,包括如何查看 Token、获取 API 服务地址、配置远程连接,以及如何在 Python 中连接 k8s。 1. 获取 Token 首先&a…...

【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究

ReadFile 函数概述 ReadFile 是 Windows API 函数,用于从文件或设备(如串口、硬盘等)中读取数据。它是同步和异步 I/O 操作的基础函数。 函数原型 BOOL ReadFile(_In_ HANDLE hFile, // 文件或设备句柄_Out_write…...

Mysql的UPDATE(更新数据)详解

MySQL的UPDATE语句是用于修改数据库表中已存在的记录,本文将详细介绍UPDATE语句的基本语法、高级用法、性能优化策略以及注意事项,帮助您更好地理解和应用这一重要的SQL命令。 1. 基本语法 单表更新 单表更新的基本语法如下: UPDATE [LOW…...

基于Java Springboot高校奖助学金系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…...

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用…...

Python爬虫:深入探索1688关键词接口获取之道

在数字化经济的浪潮中,数据的价值愈发凸显,尤其是在电商领域。对于电商平台而言,关键词不仅是搜索流量的入口,也是洞察市场趋势、优化营销策略的重要工具。1688作为中国领先的B2B电商平台,其关键词接口的获取对于商家来…...

Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书

目录 一、CA机构 二、Lets Encrypt特点 三、申请SSL 一、CA机构 ‌Lets Encrypt‌是一个由非营利组织Internet Security Research Group (ISRG)运营的证书颁发机构(CA),旨在通过自动化和开放的方式为全球网站提供免费、可靠的SSL/TLS证书。…...

JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路

目录 一、JWT 1、什么是Jwt 2、为什么要使用Jwt 3、应用场景 4.Jwt的组成 4.1、Header 4.2、Payload 4.3、signature 二、Jwt验证过程 1、生成Jwt令牌 2、解析旧的Jwt 3、复制Jwt 4、Jwt有效时间测试 三、Jwt令牌刷新思路 1、配置JwtFilter过滤器 2、登录生成Jwt令…...

xxl-job入门

xxl-job , 定时任务 分布式 , 带来的问题的 解决方案 像之前 很多项目都用到定时任务, 但是如果要改为 分布式, 那么定时任务 就要用到 xxl-job 1.用户画像 拼多多,看了某个东西后,推荐类似东西, 做埋…...

100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1

目录 1.顺序结构 2.示意图 ​编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…...