0%

DL01-绪论

1. 深度学习:一种结合了代码、数学和HTML的媒介

深度学习和机器学习现在已经渗透到了各行各业,研究深度学习可以从基础算法研究和多学科交叉应用研究切入。而现在大量的交叉学科应用给深度学习的从业者带来了独特的挑战,应用深度学习需要同时了解:

  1. 以特定方式提出问题的动机
  2. 给定建模方法的数学
  3. 将模型拟合数据的优化算法
  4. 能够有效训练模型、克服数值计算缺陷并最大限度地利用现有硬件的工程方法

2. 深度学习的形象概念

相比于市面上的传统软件系统,机器学习算法是一种“灵活”的程序算法,其输入由许多参数决定,然后我们使用数据集来确定当下的“最佳参数集”,性能度量用于判断当前参数集是否为最佳。

  1. 参数:可以看作是旋钮,通过转动旋钮来调整程序的行为
  2. 模型:任一调整了参数的程序(输入-输出映射);所有不同参数的程序被称为“模型族”
  3. 学习算法:使用数据集来选择参数的元程序

3. 深度学习的步骤

“学习”是一个模型的训练过程,通过这个过程,我们可以发现正确的参数集。训练过程通常包含如下步骤:

  1. 从一个随机初始化参数的模型开始,这个模型基本毫不智能
  2. 获取大量数据样本
  3. 调整参数,使模型在这些样本中表现得更好。
  4. 重复第2步和第3步,直到模型在任务中的表现令你满意

4. 深度学习的关键组件

4.1 我们可以学习的数据(data)

数据集由一个个样本组成,最佳情况是遵循独立同分布。

如果随机变量 X1 和 X2 独立,是指 X1 的取值不影响 X2 的取值, X1 的取值也不影响 X2 的取值。【就像抛骰子每次抛到几就是几这就是独立的,但如果要两次抛的和大于8,其余的不算,那么第一次抛和第二次抛就不独立了,因为第二次抛的时候结果是和第一次相关的。】

且随机变量 X1 和 X2 服从同一分布。【抛骰子每次得到任意点数的概率都是1/6,这就是同分布的。但如果第一次抛一个6面的色子,第二次抛一个正12面体的色子,就不再是同分布了。】

每个样本由一组特征(features)组成,机器学习模型会根据这些特征进行预测。

每个样本的特征类别数量都是相同的,所以其特征向量是固定长度的,这个长度被称为数据的维度

与传统的机器学习方法相比,深度学习的一个主要优势是可以处理不同长度的数据

需要预测的一个特殊的属性被称为标签(label)

4.2 用于转换数据的模型(model)

深度学习模型由神经网络错综复杂的交织在一起,一个适当的模型包含合适的参数,可以将输入数据转换成我们期望的输出。

4.3 一个目标函数(objective function),用来激励模型的“学习”

机器学习为“从经验中学习”,这里说的学习是指自主提高模型完成某些任务的效能。要让模型自主学习,需要使用目标函数(损失函数)来优化模型。

当任务为试图预测数值时,最常⻅的损失函数是平⽅误差(squared error),即预测值与实际值之差的平⽅。当试图解决分类问题时,最常⻅的⽬标函数是最小化错误率,即预测与实际情况不符的样本⽐例。有些⽬标函数(如平⽅误差)很容易被优化,有些⽬标(如错误率)由于不可微性或其他复杂性难以直接优化。在这些情况下,通常会优化替代⽬标。

4.4 调整模型参数以优化目标函数的优化算法

当我们获得了数据集,模型和合适的损失函数之后,我们就需要一种优化算法来搜索出最佳参数(最小化损失函数),大多数流行的优化算法通常基于梯度下降算法(gradient descent)。

简而⾔之,在每个步骤中,梯度下降法都会检查每个参数,看看如果你仅对该参数进⾏ 少量变动,训练集损失会朝哪个⽅向移动。然后,它在可以减少损失的⽅向上优化参数。

5. 各种机器学习问题

5.1 有监督学习

  1. 回归问题

任何有关“有多少”的问题很可能就是回归问题。回归问题的常见损失函数为平方误差损失函数

  1. 分类问题

任何有关“哪一类”的问题很可能就是分类问题。分类问题的常见损失函数为交叉熵损失函数

  1. 标记问题

学习预测不相互排斥的类别的问题称为多标签分类。

  1. 搜索问题

搜索结果的自动排序,类似谷歌的PageRank

  1. 推荐系统

推荐系统会为“给定用户和物品”的匹配性打分,这个“分数”可能是估计的评价或者购买的概率

  1. 序列学习

如机器翻译。医学上序列输入和输出也很重要,假设我们⽤⼀个模型来监控重症监护病⼈,如果他们在未来24小时内死亡的⻛险超过某个阈值,这个模型就会发出警报。我们绝不希望抛弃过去每小时有关病⼈病史的所有信息,而仅根据最近的测量结果做出预测。

5.2 无监督学习

聚类问题:没有标签的情况下,将相似的数据聚类

主成分分析问题:找到少量的参数来准确的捕捉数据的线性相关属性

因果关系和概率图模型问题:如果我们有关于房价、污染、犯罪、地理位置、教育和⼯资的⼈口统计数据,我们能否简单地根据经验数据发现它们之间的关系

生成对抗网络:一种合成数据的方法

5.3 强化学习

强化学习的目标是产生一个好的策略(policy),强化学习agent选择的“动作”受策略控制,即策略将环境观察映射到行为。

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

强化学习的分类 1. 当环境可以被完全观察到时,我们将强化学习问题称为马尔可夫决策过程 2. 当状态不依赖于之前的操作时,我们将该问题称为上下文赌博机 3. 当没有状态,只有一组最初未知回报的可用动作时,这个问题是经典的多臂赌博机

标签管理

发布一个版本时,通常在版本库中打一个标签(tag),作为该版本的快照

tag就是一个让人容易记住的有意义的名字,它是指向commit的指针。和分支的HEAD指针不同的是,tag指针不能移动

阅读全文 »

使用GitHub多人协作

使用Git可以轻松的实现多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master(main)分支和远程的master(main)分支对应起来了,并且,远程仓库的默认名称是origin

  • master(main)分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

阅读全文 »

Git分支管理

分支是指大家从公共远程库中copy一个属于自己的分支,然后每个人都可以在自己的分支上工作,相当于每个分支都是“平行世界”

阅读全文 »

使用Github远程仓库

  1. 上传本地仓库到Github
    1
    2
    3
    4
    5
    #首先在Github上新建同名仓库
    $ git remote add origin git@github.com:JasonLiuys/learngit.git #将本地仓库关联到远程Github服务器(origin指github远程服务器的默认命名)

    $ git push -u origin master #将本地内容推送的远程库上(master指github默认的分支,现在为main分支)(-u参数会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

阅读全文 »

Git版本控制

  1. git status : 查看仓库的当前状态

  2. git diff : 查看具体的修改内容

阅读全文 »

  • git是什么:git是分布式版本控制工具

集中式版本控制系统:图书馆存取,修改时要先下载再上传到集中服务器上

分布式版本控制系统:每个人电脑都有完整的版本库,修改时互相推送

阅读全文 »

新建文章:hexo new '文章标题'

生成静态文件:hexo g

部署文件:hexo d

文件生成后立刻部署网站:hexo g -d

启动服务器:hexo s

清除缓存文件:hexo clean

创建分类选项:$ hexo new page categories

添加标签:直接在文章head部分添加tag属性即可,会自动添加新标签

新建草稿:hexo new draft '文章标题'

发表草稿:hexo publish [layout]

阅读全文 »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment