机器学习笔记(李宏毅老师2021/2022课程)【更新中】

目录

前言

课程预览

第一讲

机器学习基本概念


前言

本文主要记录在听李宏毅老师的课时对应做的课堂笔记

课程:

(强推)李宏毅2021/2022春机器学习课程_哔哩哔哩_bilibili


课程预览

机器学习=找函数 (找一个人类写不出来的复杂函数) 课程侧重深度学习(类神经网络的整个类型)
  输入:各种各样 eg:vector、Matrix、Sequence
  输出:各种各样 eg:scalar、classification(类别)、image、text


教机器的种种方法:

1、Supervised Learning (监督学习) 【lecture 1-5】

  • eg:让机器学会给他一张图片,判断是宝可梦还是数码宝贝
  • 做法:收集一大堆的训练资料  比如抓很多动物,然后标记它是宝可梦还是数码宝贝 标注就称为label 标注好后叫机器自动找出一个方向,这个方向的输入是动物,输出告诉是宝可梦还是数码宝贝
  • 存在问题:标记是一个非常耗费人工的事情,可能收集到的标记资料不会太多,而且如果要为每一个任务收集足够的标准资料,非常麻烦所以引入了self-supervised Learning

2、Self-supervised Learning (无监督学习) 【lecture 7】

  • Pre_train:Develop general purpose knowledge  (预训练:在训练之前先练成一些基本功) 又叫做Foundation Model
  • eg:让机器学会做各种不同影响辨识相关任务的基本功,把基本功练好以后可以在新的任务上做得更好  练基本功时,不需要任何标准,只需要发一大堆影像资料,机器就会自动学会我们要它学习的基本能力         最知名的模型:BERT  还有GPT-3 GPT-2 T5等模型
  • Downstream Tasks (下游任务:真正要机器学会的任务)  在进行基本功能的预训练以后机器就可以在我们真正关心的下游任务上面得到好的结果
  • Pre-trained Model和Downstream Tasks的关系类似作业系统和应用之间的关系,就像现在开发一个软件简单很多,因为核心和最难得部分已经被作业系统实现了(如Android studio等)

3、Generative Adversarial Network (生成对抗网络)  【lecture 6】

  • x->function->y  只需要收集大量的x和收集到大量的y,不需要他们之间成对的关系,机器就有自动把它们之间的关联找出来
  • eg:语音识别

    监督学习:要收集大家的声音讯号,然后这些声音讯号需要标注出对应的文字,就可以让机器学会怎么把一段声音转成一段文字

   GAN:可以使机器只听大量的声音讯号,接下来读大量的文字,文字不需要使同样的来源,不需要讲它的内容,机器也有办法自动学会做语音辨别这件事情

4、Reinforcement Learning (强化学习)  【lecture 12】

用途:不知道要怎么标注资料的时候,比如想要叫机器学会下围棋,看到棋盘知道下一手下到哪里,但人类可能也不知道下一手下在哪里,此时就可以利用RL技术(即不知道怎么标注资料,但能判断好坏,能定义什么叫成功的情况)


除了追求正确率以外,还要关注其他事情

5、Anomaly Detection (异常检测)  【lecture 8】

假设真的训练成功一个宝可梦跟数码宝贝的分类器,如果提供的图片是恐龙,那机器回答什么?即异常检测就是让机器能够具备回答我不知道的能力

 6、Explainable AI  (可解释性AI)  【lecture 9】

假设真的训练成功一个宝可梦跟数码宝贝的分类器,真的代表它聪明吗?真的代表它知道宝可梦长什么样子吗?未必。我们要让它不只是回答正确的答案,同时还要告诉我们为什么它知道答案应该是这样

7、Model Attack (模型的攻击)     【lecture 10】

尽管如今影像辨别系统很厉害,对图片添加杂讯,机器识别失败,这就是人类对模型的攻击

8、Domain Adaptation  (领域自适应)   【lecture 11】

在进行机器学习时往往假设训练资料和测试资料它们的分布是类似的,这样测试的正确率会非常高,但假如训练资料是黑白的,测试资料是彩色的,此时的正确率就会大大下降,这是要解决的问题

9、NetWork Compression (模型压缩)   【lecture 13】

将很大的模型进行压缩,使得其能够在手机/智能手表等上面跑

10、Life-long Learning  (终身学习)  【lecture 14】

11、Meta learning (元学习)  【lecture 15】

前14讲都是人去设计了一个学习的演算法,让机器具备分类的能力。这一讲讲机器从大量的任务里面自己发明新的演算法,机器不再使用人发明的算法,而是从过去的学习经验里面发明出新的演算法

Few-shot learning is usually achieved by meta-learning (用非常少量的资料就进行学习)


第一讲

机器学习基本概念

用一句话概括机器学习:让机器具备找一个函数的能力

一、函数的不同种类

1、Regression:The function outputs a scalar.  (回归:函数输出标量。)

eg: 预测PM2.5 输入为今天的PM2.5数据、今天的温度、臭氧浓度等,通过函数f,输出明天的PM2.5值  这一个函数的任务就是Regression

2、Classification:Give options(classes),the function outputs the correct one (分类:给出选项(类),函数输出正确的选项)

eg: 邮箱里面收到很多邮件,判断其是否为垃圾邮件  输入是一封电子邮件,通过f,输出实现规定好的选项中符合的一个

阿尔法狗也是一样,输入是棋盘上黑子和白子的位置,通过f,输出从19X19的选项选出一个正确的选项

3、Structured Learning:Create something with structure(image,document)

让机器不只是做选择和输出数字,而是要产生一个有结构的物件(图片、文件等),即让机器学会创造这件事情

二、机器怎么找一个函数呢?

     例子:假设需要根据自己的youtube频道的前一天的阅读点击率去预测明天有可能的点阅的次数,怎么找这个函数呢?

    机器学习找这个函数的过程可以分为三个步骤

1、Function with Unknown Parameters  (参数未知的函数)

  • y = f(youtube数据)  猜测数学式长什么样?输入跟y有什么关系呢?   []里面为名称,一些名词的定义
  • Model: y = b + wx₁  (base on domain knowledge) (带有Unknown parameters的Function成为Model)
  • y:no.of views on 2/26(今天的观看人数 未知)   x₁:no.of views on 2/25(前一天观看人数)[feature]
  • w[weight] and b[bias] are unknown parameters(learned from data)

2、Define Loss from Training Data (从训练数据中定义损失)

  • Loss is a function of parameters  L(b,w)  Loss:how good a set of values is

  输入是Model里面的参数b,w 输出是当把一组未知的参数设定某一个数值时,这个数值好还是不好

  • eg:L(0.5k,1) y = 0.5k + 1x₁  How good it is?

   训练资料是这个频道过去的点击次数,把点阅次数代入函数,比对计算结果和真实结果,计算差距,得到e₁=|y-y^|

    label指的就是正确的数值y^(真实值)  计算过去每一天的点阅次数,都可以得到一个差距e然后把每一天的差距加起来然后取得平均  Loss: L = 1/N∑e  L越大代表这一组参数越不好,L越小代表这一组参数越好

计算差距的方法可以有多种  得到的L可能有正有负

如所取的e = |y-y^| 所得到的L is mean absolute error(MAE)

              e = (y-y^)₂ 所得到的L is mean square error(MSE)

如果y和y^都是几率分布的话可以选择Cross-entropy

通过给参数设置不同的数值,得到对应的Loss 并将其绘制成等高线图,该等高线图称为Error Surface

3、Optimization (最佳化) 

  可以让L最小的w,b组合记为w*,b*

  • 方法:Gradient Descent  

     ①(Randomly)Pick an initial value wº    

    先假设未知的参数只有一个w,当w代表不同数值的时候就会得到不同的Loss,怎么样找到一个w去让这个loss的值最小呢?随机选取一个初始的点wº

     ② compute ∂L/∂w

    计算w等于wº的时候,w这个参数对loss的微分是多少,结果是负数,说明左边比较高右边比较低,那么就把w的值变大从而使得L变小

    如果算出来是整数,说明左边比较低右边比较高,那么就把w的值变小,可以使得L变小

【变大变小的步伐取决于两件事——①微分(斜率)有多大,斜率越大不步伐越大 ②η:learning rate (学习速率 自己设定的 速率越大,每次参数就会update很大 学习可能就比较快)   在机器学习中需要自己设定的东西叫做hyperparameters   第一步中的未知参数是机器自己找出来的】

     ③update w iteratively

     wº移动步伐后为w₁,步伐为η∂L/∂w,重复以上步骤

  • 停下来的情况:①失去耐心,最多计算几次就结束 ②微分值算出来刚好是0
  • 该方法存在的问题:没有真正找到最好的解,没有找到那个可以让Loss最小的w,可能只找到Local minima 而找不到global minima。真的可以让Loss最小的地方叫做global minima(最大值)   还有Local minima(极小值)。但如果真正的去训练网络,自己用这个方法,可以发现local minima是一个假问题,真正面临的问题不是local minima而是另有其它

  • 两个参数使用Gradient Descent的步骤

对两个参数进行计算后绘制等高线图及使用Gradient Descent方法的过程如图所示:

上述三个步骤所得到的结果是一个让人满意的结果吗?也许不是。这三个步骤合起来叫做训练,是在已经知道的资料上进行计算Loss。而我们真正的目的是要去测明天未知的点阅次数。

因而接下来应该拿这个函数去预测一下未来一年的每天的可能点阅次数,然后得到平均误差,结果发现在没看过的资料上误差值比看过的资料要大

分析结果继续优化  真实结果有周期性——七天一循环,周五六观看人数少

因此我们可以修改模型,改为将前七天的资料直接复制到拿来当做进行预测的数据。甚至可以考虑更多天28天、56天。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548615.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Splashtop 自收购 Foxpass 以来新业务增长62%

2024年9月24日 加利福尼亚州库比蒂诺 Splashtop 在简化远程办公解决方案领域处于领先地位,今天宣布继去年收购 Foxpass 之后,新的 Foxpass 业务实现了62%的增长。Splashtop 的 Foxpass Cloud RADIUS 可确保企业 Wi-Fi 网络安全,防止未经授权…

PaddleOCR 表格识别,docker部署,cpu版本

前置环境 centeros7 docker 拉取镜像 docker pull registry.baidubce.com/paddlepaddle/paddle:2.6.1 参考:开始使用_飞桨-源于产业实践的开源深度学习平台 这里拉取的镜像并不能立马用,只是内置好运行环境 随便找个目录下载paddleocr的代码 git…

死磕P7: JVM垃圾回收那点事,轻松拿捏不是事儿(二)

这是「死磕P7」系列第 004 篇文章,欢迎大家来跟我一起 死磕 100 天,争取在 2025 年来临之际,给自己一个交代。(公&号:新质程序猿,更新会更及时,内容也会更全面丰富,欢迎大家关注…

神仙级AI产品经理入门手册,从入门到入魂非常详细,收藏这一篇,少走三年弯路!!!

作为一个产品经理,你可能已经熟悉了一些常见的AI技术和应用,比如机器学习、深度学习、自然语言处理、计算机视觉等。 但是,你是否了解什么是大模型?大模型又有什么特点和优势?为什么大模型会成为AI领域的一个重要趋势…

Llama系列迈向多模态新时代:3.2版本开源超越闭源,并携手Arm推出手机优化版

在多模态领域,开源模型也超闭源了! 就在刚刚结束的 Meta 开发者大会上,Llama 3.2 闪亮登场: 这回不仅具备了多模态能力,还和 Arm 等联手,推出了专门为高通和联发科硬件优化的 “移动” 版本。 具体来说&a…

尾矿库安全监测系统:守护矿山安全的关键技术

尾矿库是矿山企业用于存放尾矿的重要设施,其安全状况直接关系到周边环境和人民生命财产安全。近年来,随着技术的不断进步,尾矿库安全监测系统应运而生,为尾矿库的安全管理提供了强有力的技术支持。本文将详细介绍尾矿库安全监测系…

en造数据结构与算法C# 之 二叉排序树的删除

en造数据结构与算法C# 之 二叉排序树的增/查-CSDN博客 删除方法比起添加和查找就稍显复杂了 &#xff0c;所以单独拿出来写一篇 分析 输入 1.根节点&#xff0c;用于从根上查找你要删除的节点 2.需要删除的值 public Node<T> Delete(Node<T> root, T data) {if (…

设计模式、系统设计 record part02

软件设计模式&#xff1a; 1.应对重复发生的问题 2.解决方案 3.可以反复使用 1.本质是面向对象 2.优点很多 1.创建型-创建和使用分离 2.结构型-组合 3.行为型-协作 571123种模式 UML-统一建模语言-Unified Modeling Language 1.可视化&#xff0c;图形化 2.各种图&#xff08;9…

SSH连接提示秘钥无效

说明&#xff1a;本文记录一次使用SSH连接服务器失效的问题。 使用SSH命令连接服务器&#xff0c; ssh -i ssh秘钥路径 user192.xx.xx.xx提示下面的错误&#xff1b; Load key "shuhe.bin": invalid format aochuang192.xx.xx.xx: Permission denied (publickey,g…

Python新手学习过程记录之基础环境:环境变量、版本区分、虚拟环境

https://img-blog.csdnimg.cn/img_convert/0604267530a515112e51dfc80d0b0ee7.png 刚开始接触Python并学习一门开发语言,可能就会遇到一些棘手的问题,比如电脑上不知不觉已经安装了多个python版本,python3.8/3.10/3.11,甚至一些软件中也集成有python解释器&#xff1b;那么我编…

每日一题|2516. 每种字符至少取 K 个|双指针、最长子串、字典

本题需要转化求解目标。 对于一个序列&#xff0c;两头收集的最少数量的时候&#xff0c;剩下的部分&#xff08;我们称之为子串&#xff09;就会对应的越长。也就是说&#xff0c;我们只要求解一个满足要求的最长子串&#xff0c;使得两边剩余的字符数量刚好满足要求。 由于…

实时美颜功能技术揭秘:视频美颜SDK与API的技术剖析

当下&#xff0c;用户希望在视频直播中呈现出最佳状态&#xff0c;这推动了视频美颜SDK和API的迅速发展。本文将深入剖析这项技术的核心原理、应用场景以及未来趋势。 一、实时美颜技术的基本原理 在实现这些效果的过程中&#xff0c;视频美颜SDK通常会使用以下几种技术&…

Geekbench6使用指南:Linux系统性能测试,如此简单!

在当今计算机性能日益重要的时代&#xff0c;Geekbench 成为了测试 CPU 性能的热门工具。本文将带你深入了解如何使用 Geekbench&#xff0c;让你的电脑性能一目了然。 1. 什么是 Geekbench&#xff1f; Geekbench 是一款跨平台的基准测试工具&#xff0c;能够评估单核和多核…

Ubuntu Server 20.04 64bit定时备份MySQL8.0.36数据库数据

一、编写sh脚本 常见备份命令介绍 我选用的是mysqldump命令&#xff0c;命令使用简介 [root]> mysqldump -helpUsage: mysqldump [OPTIONS] database_name [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all…

字节软件测试岗二面:APP测试问题被虐哭了,直到看到这些知识点

APP测试一直是大厂软件测试问到的一个重点细节&#xff0c;下面我来给大家展示一下大厂关于APP测试经常会问到的一些问题&#xff0c;以及解析。想象一下当你遇到面试官问到你这些问题时&#xff0c;你是否也能够对答如流哦&#xff01; 注意&#xff0c;注意啦&#xff01;小编…

对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击

对抗攻击方法详解&#xff1a;梯度攻击、转移攻击与模型集成攻击 近年来&#xff0c;随着深度学习模型在各个领域取得惊人突破&#xff0c;对抗攻击&#xff08;Adversarial Attack&#xff09; 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动&#x…

Meta号称替代程序员的LlamaCoder效果被CodeFlying秒杀,来看实测!

在讲LlamaCoder之前咱先浅聊一下Meta 这两天Meta凭借着Connect 2024大会可谓是风头正盛&#xff0c;刚刚发布的全新开源多模态大模型Llama3.2&#xff0c;热度是一路赶超咱的小草莓啊。 作为一款开源大模型能够和闭源的4o-mini、Claude3 Haiku打的有来有回&#xff0c; 甚至L…

32. Java栈和队列

1. 前言 栈和队列相关的题目是校招中出现频率一般,但是是属于相对基础的题型。我们要关注两类问题,栈和队列的添加和删除操作,以及栈和队列之间的区别和联系。 2. 栈和队列 2.1 数据结构 首先我们给出栈和队列的数据结构定义: (1)栈(Stack):允许在某一端插入元素(…

Ubuntu下Kafka安装及使用

Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;同时也是一个高吞吐量的分布式发布订阅消息系统。它由Scala和Java编写&#xff0c;具有多种特性和广泛的应用场景。 Kafka是一个分布式消息系统&#xff0c;它允许生产者&#xff08;Producer&#xff09;发布消…

CUDA error: no kernel image is available for execution on the device

记录一下出现上述问题的一个原因&#xff1a; pytorch所依赖的cuda版本不满足显卡(GPU)的算力要求&#xff01; 举例来说&#xff0c;显卡是3090&#xff0c;并按照以下命令安装Pytorch: conda install pytorch1.7.0 torchvision0.8.0 torchaudio0.7.0 cudatoolkit10.1 -c p…