首页 > 其他分享 >动手学习深度学习

动手学习深度学习

时间:2024-09-05 20:47:51浏览次数:5  
标签:机器 函数 模型 学习 动手 参数 深度 数据

动手学习深度学习

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

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

标签:机器,函数,模型,学习,动手,参数,深度,数据
From: https://www.cnblogs.com/comiZ/p/18399212/study-in-deep-learning-2qkmbg

相关文章

  • 数组的学习
    1.一维数组在C语言中,数组的声明格式为:类型名数组名[数组长度];例如:intnumbers[5];表示声明了一个包含5个整数的数组。数组的元素可以通过索引来访问,索引从0开始计数。例如,要访问数组numbers中的第一个元素,可以使用numbers[0]。一维数组的初始化主要需要注意字符数组的初始......
  • 基于SpringBoot+Vue+Uniapp的大学生党务知识学习微信小程序
    文章目录前言详细视频演示论文参考具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我自己的网站([小蔡coding](https://xiaocaicoding.cn/))代码参考数据库参考源码获取前言......
  • C++学习笔记----6、内存管理(二)---- 数组指针的双向性
            你可能已经看到指针与数组之间的一些重叠。自由内存空间分配的数组由其第一个元素的指针进行访问。栈上的数组通过使用数组语法([])或者正常变量声明来访问。你还会看到的是,其重叠不仅如此,指针与数组有更复杂的关系。1、数组退化至指针        自由内......
  • C#/.NET/.NET Core优质学习资料,干货收藏!
    前言今天大姚给大家分享一些C#/.NET/.NETCore优质学习资料,希望可以帮助到有需要的小伙伴。什么是.NET?.NET是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应用程序。使用.NET,可以使用多种语言、编辑器和库来构建Web、移动、桌面、游戏和IoT等。一......
  • 【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林
    引言梯度提升(GradientBoosting)是一种强大的机器学习技术,它通过迭代地训练决策树来最小化损失函数,以提高模型的预测性能随机森林(RandomForest)是一种基于树的集成学习算法,它通过组合多个决策树来提高预测的准确性和稳定性文章目录引言一、梯度提升1.1基本原理1.1.1......
  • 【机器学习】模型性能与可解释性的矛盾以及如何提高可解释性和模型性能
    引言文章目录引言一、模型性能与可解释性的矛盾1.1矛盾的一些关键点1.1.1模型性能1.2可解释性1.3矛盾点1.3.1复杂性与简单性1.3.2黑盒模型1.3.3业务需求1.3.4合规性和责任1.4解决方案1.4.1使用可解释的模型1.4.2模型简化1.4.3后验可解释性技术1.4.4模型......
  • 深度解析C++中函数重载与引用
    ......
  • Java中多态的学习
    多态目录多态多态的概念为什么要使用多态多态存在的三个必要条件多态的实现方式多态的分类方式一方式二多态的机制原理多态的概念多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。为什么要使用多态消除类型之间的耦......
  • Vue3 中的状态管理:Vuex vs Pinia 深度分析
    Vue3中的状态管理:VuexvsPinia深度分析在现代前端开发中,状态管理是一个至关重要的方面。尤其是在大型应用中,如何高效、清晰地管理状态不仅影响着代码的可读性和可维护性,还对应用的性能有直接的影响。在Vue3中,Vuex和Pinia是两种主要的状态管理库,这两者各有不同的设......
  • 图形学学习(二):Shader输入输出及自制Shader类
    在LearnOpengl学了Shader的输入输出和自制Shader类,输入输出还是好理解的,自制Shader类的讲解我感觉还是用代码更直观一些(个人感觉),这两天看了一下秋招的面试面经,想了想明年找工作的问题,刺激,十分感慨,优秀的人还是太多了,不过最重要的还是得做好自己!!!Shader的输入输出总结有两种......