动手学习深度学习

动手学习深度学习

特点:数学原理推理+代码实现

CH1 引言

引言:

学习到一种数学的直觉

image

机器学习路线:

image

常见结构:

image

为什么要有机器学习:

机器学习是为了让机器学习到人类学不到的知识,人类学习的能力是有限的,只能通过简单的几种形式如语言,视频等来进行学习,但机器远不止于此,机器可以通过更加多样化的形式来进行学习。

机器学习的定义

任务定义:

现在,假如需要我们编写程序来响应一个“唤醒词”(比如“Alexa”“小爱同学”和“Hey Siri”)。 我们试着用一台计算机和一个代码编辑器编写代码,如 图1.1.1中所示。 问题看似很难解决:麦克风每秒钟将收集大约44000个样本,每个样本都是声波振幅的测量值。而该测量值与唤醒词难以直接关联。那又该如何编写程序,令其输入麦克风采集到的原始音频片段,输出是否{是,否}(表示该片段是否包含唤醒词)的可靠预测呢?我们对编写这个程序毫无头绪,这就是需要机器学习的原因。

../_images/wake-word.svg

图1.1.1 识别唤醒词

通常,即使我们不知道怎样明确地告诉计算机如何从输入映射到输出,大脑仍然能够自己执行认知功能。 换句话说,即使我们不知道如何编写计算机程序来识别“Alexa”这个词,大脑自己也能够识别它。 有了这一能力,我们就可以收集一个包含大量音频样本的数据集(dataset),并对包含和不包含唤醒词的样本进行标记。 利用机器学习算法,我们不需要设计一个“明确地”识别唤醒词的系统。 相反,我们只需要定义一个灵活的程序算法,其输出由许多参数(parameter)决定,然后使用数据集来确定当下的“最佳参数集”,这些参数通过某种性能度量方式来达到完成任务的最佳性能。

那么到底什么是参数呢? 参数可以被看作旋钮,旋钮的转动可以调整程序的行为。 任一调整参数后的程序被称为模型(model)。 通过操作参数而生成的所有不同程序(输入-输出映射)的集合称为“模型族”。 使用数据集来选择参数的元程序被称为学习算法(learning algorithm)。

在开始用机器学习算法解决问题之前,我们必须精确地定义问题,确定输入(input)和输出(output)的性质,并选择合适的模型族。

训练流程

如 图1.1.2所示,训练过程通常包含如下步骤:

  1. 从一个随机初始化参数的模型开始,这个模型基本没有“智能”;baseline
  2. 获取一些数据样本(例如,音频片段以及对应的是或否标签);
  3. 调整参数,使模型在这些样本中表现得更好;
  4. 重复第(2)步和第(3)步,直到模型在任务中的表现令人满意。

../_images/ml-loop.svg

图1.1.2 一个典型的训练过程

Key components:

data->model->objective function (目标函数)-> algorithm(优化参数的算法)

数据:

数据(sample,example),假设都遵从independently and identically distributed ,即每个数据不同,每一组样本由一组features或者covariates(协变量)组成,机器学习则会根据这些属性进行预测,预测一个label或者target。一般来说,数据越多,训练效果越好

模型:

模型主要是处理数据的转换,深度学习与经典方法的区别在于深度学习组合了多层的神经网络

目标函数:

机器学习意味从经验中学习,这里的学习是指自主提高模型对于某些任务的能力。目标函数用于定量模型的优劣程度,目标函数必须为可优化函数,即为凹函数。希望将目标函数优化到最低点,这些函数也被称为objective function,利用squared error评判预测值和实际值之间的误差来调整参数。数据集通常分为两部分,测试集用于评判目标函数,通常会出现overfitting的情况,实际训练中要避免这种情况。

优化函数:

搜索出最佳参数,最小化损失的的函数称为优化函数,通常为gradient descent。

常见机器学习问题:

监督学习:利用标签数据进行训练,得到一个带有特定参数的具结构神经网络,对未带标签的类进行预测

回归:简单的监督学习,回归一般用于预测连续值

分类:简单的监督学习,分类一般用于预测类别,分为二项分类和多分类,多分类用交叉熵作为损失函数,cross-entropy

标记问题:不排斥的分类问题,如一张图片中同时含有猫和狗

搜索问题:利用相关性进行排序

推荐系统:对用户进行特定化的,复杂的预测算法

序列学习:共性是固定大小的输入和固定大小的输出,大量的数据,是机器学习最令人兴奋的应用之一。语音识别,机器翻译等等都算序列学习。

无监督学习:unsupervised learning,自发性学习,数据不带标签

Clustering:无标签情况下对数据进行分类

Principal component analysis: 对特征进行优化,减小计算量

Causality(因果关系)和probabilistic graphical models(概率图模型):根据数据发现一些联系,比如尿布和啤酒

Generative adversarial networks(生成对抗性网络):提供一种合成数据的方法,甚至是像图像和音频这种复杂的非结构化数据,训练机制是生成器尽量生成出判别器判别不出来的假数据,判别器尽量判定出真实的数据

与环境进行互动:

这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offline learning)。 对于监督学习,从环境中收集数据的过程类似于 图1.3.6。

../_images/data-collection.svg

图1.3.6 从环境中为监督学习收集数据。

这种简单的离线学习有它的魅力。 好的一面是,我们可以孤立地进行模式识别,而不必分心于其他问题。 但缺点是,解决的问题相当有限。 这时我们可能会期望人工智能不仅能够做出预测,而且能够与真实环境互动。 与预测不同,“与真实环境互动”实际上会影响环境。 这里的人工智能是“智能代理”,而不仅是“预测模型”。 因此,我们必须考虑到它的行为可能会影响未来的观察结果。agent会与环境进行交互

强化学习:

deep reinforcement learning,深度强化学习,代表作:Q-network问题建模模型:

在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互。 在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)。 此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。 强化学习的过程在 图1.3.7 中进行了说明。 请注意,强化学习的目标是产生一个好的策略(policy)。 强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。

../_images/rl-environment.svg

图1.3.7 强化学习和环境之间的相互作用

强化学习框架的通用性十分强大。 例如,我们可以将任何监督学习问题转化为强化学习问题。 假设我们有一个分类问题,可以创建一个强化学习智能体,每个分类对应一个“动作”。 然后,我们可以创建一个环境,该环境给予智能体的奖励。 这个奖励与原始监督学习问题的损失函数是一致的。

机器学习的起源:

1.数据的分布:伯努利分布和高斯分布,统计学基础

2.智能的探讨:香农的信息论和图灵的计算理论,神经元理论:强化期望,减少不良行为

3.神经网络的研究实现:layers层数,backpropagation反向传播,调整网络中的所有参数

深度学习特点:

1.除了端到端的训练,人们正在经历从参数统计描述到完全非参数模型的转变

2.接受次优解,处理非凸非线性优化问题,并且愿意在证明之前尝试

3.深度学习是属于第四范式,通过数据(经验)来提高特定任务的性能

4.深度学习是通过学习多层次的转换来进行的多层次的表示学习

5.系统的整体优化十分重要

课后练习:

  1. 你当前正在编写的代码的哪些部分可以“学习”,即通过学习和自动确定代码中所做的设计选择来改进?你的代码是否包含启发式设计选择?

    答:没有编写多少代码,但接触里面的pid算法可以学习,不包含启发式设计

  2. 你遇到的哪些问题有许多解决它们的样本,但没有具体的自动化方法?这些可能是使用深度学习的主要候选者。

    答:金融投资,时间序列预测,无人机参数调整

  3. 如果把人工智能的发展看作一场新的工业革命,那么算法和数据之间的关系是什么?它类似于蒸汽机和煤吗?根本区别是什么?

    相互依存,不类似,蒸汽机没有煤无法运转,但是算法可以没有数据,蒸汽机必须依靠煤,算法可以帮助我们得到更好的数据,但是蒸汽机无法帮助我们得到更好的煤

  4. 你还可以在哪里应用端到端的训练方法,比如 图1.1.2 、物理、工程和计量经济学?

    控制

CH2 基础知识

数据相关操作

数据维度:

RGB图片是3幅图片,代表为MxNx3的图片,MxN代表图片的宽高,3代表3个通道,即为

image

image

数据读取操作

image

Linear algebra:

正定矩阵:一个矩阵乘以任意行或列的结果都是正数

按维度进行求和计算:根据给定的维度,在该维度上进行维度塌缩,给定keepdims参数会保持维度不变,原维度上的数字变为1

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

章10——面向对象编程(高级部分)——抽象类

介绍更多意义在于其设计意义。供子类参考的一个模板。 注意细节final、private、static与重写矛盾,不可与abstract共用! 补充说明 static方法可以被继承,不可以被重写,若父子方法名相同,则会隐藏derive类派生类方法,调用base类基类方法。静态方法时编译时绑定的,而方法重…

语义分块:改进 AI 信息检索

RAG 系统及其挑战 检索增强生成的流行是有充分理由的。它允许 AI 系统通过结合信息检索和语言生成来回答问题。标准的 RAG 管道通过摄取数据、检索相关信息并使用它来生成响应来实现这一点。 然而,随着数据变得越来越复杂,查询也越来越复杂,传统的 RAG 系统可能会 面临限制。…

DP优化——wqs二分

在看 wqs 二分前建议先去看另一篇博客——斜率优化,对凸包等知识点有所了解。 介绍 wqs 二分最初由王钦石在他的 2012 年国家集训队论文中提出,也叫"带权二分",或者"dp凸优化",而从 IOI 2016 的 Aliens 题目开始,这种方法开始逐步在竞赛圈中有了一定的…

一次Java性能调优实践【代码+JVM 性能提升70%】

这是我第一次对系统进行调优,涉及代码和JVM层面的调优。如果你能看到最后的话,或许会对你日常的开发有帮助,可以避免像我一样,犯一些低级别的错误。本次调优的代码是埋点系统中的报表分析功能,小公司,开发结束后,没有Code Review环节,所以下面某些问题,也许在Code Rev…

orangepi5plus上搭建ubuntu22.04环境

本文是参考orangepi5plus官方手册进行ubuntu22.04环境搭建:Orange Pi - Orangepi(官方手册下载官网)进去之后,选择ubuntu的官方镜像,点击下载出现百度网盘的下载内容,在众多版本里面我下载了下面的文件夹(ubuntu22.04) 该文件夹里面包含的后缀是.img就是ubuntu22.04的镜…

【Azure Policy】分享Policy实现对Azure Activity Log导出到Log A workspace中

问题描述 使用Azure Policy服务,对公司内部全部的订阅下的Activity Log,都需要配置导出到Log A Workspace中。以下Policy规则可以实现此目的。Policy内容说明 在Policy Rule部分中,选择资源的类型为 "Microsoft.Resources/subscriptions", 效果使用 DeployIfNotE…

C#/.NET/.NET Core优质学习资料,干货收藏!

前言 今天大姚给大家分享一些C#/.NET/.NET Core优质学习资料,希望可以帮助到有需要的小伙伴。 什么是 .NET? .NET 是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应用程序。 使用 .NET,可以使用多种语言、编辑器和库来构建 Web、移动、桌面、游戏和 IoT…

自我评估

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 熟悉Github和博客园,了解其基本操作,完善自我信息并学习Markdown的基本使用方法以及AIGC画图学号 102202132一…

2.常量 变量 类型转换 进制转换

常量 变量 类型转换 进制转换1.常量的使用2.变量的使用3.会强制类型转换一、常量(一)常量的分类1.概述:在代码的运行过程中,其值不会发生改变的数据2.分类: 整数常量:所有整数 小数常量:所有带小数点的 字符常量:带单引号,有且只能有一个内容 字符串常量:带双引号…

linux中tar命令的使用

tar简介 在linux中tar是一个常用的工具,用于打包和解压文件,全称是tape archive。 它能够将一组文件和目录打包成单个归档文件,也可以从归档文件中提取出文件和目录参数列表 使用实例介绍1.要创建一个归档文件,可以使用参数 -c 和 -f ,然后指定归档文件名例如要将/home/cy…

11.面向对象(3)

MODULE 11 面向对象会定义接口会在接口中定义抽象方法,默认方法,静态方法,成员变量会调用接口中的成员会利用多态的方式new对象知道多态的前提要知道使用多态的好处会在多态的前提下,向下转型会利用instanceof判断类型一.接口(一)接口的介绍1.接口:是一个引用数据类型,是一个…

8.封装

MODULE 8 封装1.要回使用private关键字修饰成员,并知道被private修饰之后的作用(访问特点)是什么2.会使用set方法为属性赋值,使用get方法获取属性值3.会利用this关键字区分重名的成员变量和局部变量4.会利用空参构造创建对象,并知道空参构造作用5.会使用有构造创建对象…