Fork me on GitHub
小火箭的博客

愿世界和平!!!


  • 首页

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 公益404

  • 留言板

  • 其他

深入浅出计算机组成原理——原理篇:指令和运算(05-10)

发表于 2021-07-08 | 分类于 学习笔记 , 计算机组成原理 |
| 字数统计: 3.7k | 阅读时长 ≈ 14

全文内容主要来自对课程《深入浅出计算机组成原理》的学习笔记。

05 | 计算机指令

最早是“打孔卡(Punched Card)”来使用计算机的,即输入一系列0/1。

CPU的任务

CPU 在硬件层面实现了加法、乘法等各种处理逻辑。即执行各种计算机指令(Instruction Code)的逻辑机器。

一种CPU对应一种语言,一般称为计算机指令集(Instruction Set)。Intel 和 ARM 就互不相同。

一个程序一般会有很多指令,而CPU不能存在这么多,一般都是在存储器中。这种就叫存储程序型计算机(Stored-program Computer)。

非存储程序型,比如用电线和插口组装某种固定程序的计算机,类似一次性的。

阅读全文 »

深入浅出计算机组成原理——入门篇(01-04)

发表于 2021-07-02 | 分类于 学习笔记 , 计算机组成原理 |
| 字数统计: 1.9k | 阅读时长 ≈ 6

全文内容主要来自对课程《深入浅出计算机组成原理》的学习笔记。

01 | 冯·诺依曼体系结构

计算机的基本硬件组成

三大件:CPU、内存和主板。

  • CPU:最重要的核心配件,中央处理器(Central Processing Unit).
  • 内存(Memory):存放程序和数据要被 CPU 读取和计算完之后,写回到内存.
  • 主板(Motherboard):主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存之间如何通信的问题。

总线速度(Bus Speed)决定了数据能传输得多快。

  • 输入/输出(I/O)设备:键盘、鼠标,显示器等;
  • 硬盘:让各种数据才能持久地保存下来。
  • 显卡(Graphics Card):是另一个“处理器”,也就是 GPU(Graphics Processing Unit,图形处理器)。
阅读全文 »

从 MMOE 到 PLE 模型

发表于 2021-06-21 | 分类于 精排模型 , 算法总结 |
| 字数统计: 3.9k | 阅读时长 ≈ 15

1 引言

在当下以深度学习为基调的推荐系统中,传统的单目标优化往往会带来一些不健康的生态指标变化,例如仅优化 CTR 可能会使得用户深层行为下降,往往推出一些博眼球和标题党等内容或商品。所以就催生了利用模型对 CLICK 后的各种深层行为的学习,最常用的便是 CVR(转化率),当然还有 cfr(收藏率)以及 viewtime(浏览时长)等等目标,视具体场景的业务指标而定。

为了解决上述问题,最原始的方法便是多模型多分数融合,也即对不同目标单独构建模型,线上独立打分进行融合,但是这样带来的问题便是深度行为的样本一般不足,难以使得模型学习的很好,而且独立建模成本高昂。为了进一步提效,目前主流的方法便是统一模型进行不同目标的联合训练,而模型内部不同任务之间存在一定信息共享。如此,

  • 一方面使得相关任务之间能够互相分享和补充信息,促进各任务学习能力;
  • 另一方面,梯度在反向传播的时候,能够兼顾多个任务模式,提高模型的泛化能力。
阅读全文 »

MMOE 模型解析

发表于 2021-06-06 | 分类于 精排模型 , 算法总结 |
| 字数统计: 1.9k | 阅读时长 ≈ 8

1 引言

本文介绍的MMOE模型全称是Multi-gate Mixture-of-Experts,来自 Google 在 2018 年 KDD 上发表的论文Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts。核心目标是改善多任务学习在任务之间不太相关的时候效果不好的问题。下面有两个相关学习资源:

  • 视频简介的youtube地址;
  • 一个用keras框架实现的开源地址。

2 动机

多任务学习一般是为了在训练多个相关任务的时候可以使得它们之间能够共享信息,提高学习效率和模型的泛化能力。但实际应用中往往难以如此理想化,因为任务之间往往相关性不够强,这时候就容易产生以下两个问题:

负迁移(negative transfer):即网络表现变差
跷跷板现象(seesaw phenomenon):也就是个别任务相对于独立训练获得提升,但其他任务效果下降。

阅读全文 »

深度学习的常用损失函数

发表于 2021-04-23 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 3.6k | 阅读时长 ≈ 15

1 引言

在深度学习中,损失函数(Loss Function)至关重要,它决定着深度模型的训练学习的方式,其设计的恰当与否,往往会影响到最终模型的有效性。
虽然在很多通用型任务上,业内逐渐形成使用惯例,(如点击率建模,默认都用对数损失,logloss),但对损失函数的认识越清楚,会有助于算法工程师在面临新任务时,在模型设计上事半功倍。

2 常用损失函数

损失函数的任务是:针对一个样本,度量模型的预估值 logit 即$\hat y$和对应真实 Label 即$y$之间的差异。

不同的损失函数有不同的含义,主要是模型学习逼近样本分布的方式。所以它是一个非负实值函数,主要特点为:恒非负;误差越小,函数值越小;收敛快。

阅读全文 »

Batch Normalization 小记

发表于 2021-04-05 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 2.6k | 阅读时长 ≈ 10

1 背景

如果你是一个玩深度学习的算法工程师,那么相信你对批标准化(Batch Normalization)一定不陌生。在实际训练深度模型中,BN 往往用来加速模型收敛或者缓解梯度消失/爆炸的问题。笔者在实际使用过程中也有一定的收获和思考,收获是不同的使用姿势确实能够带来不一样的效果。思考就是,虽然大致知道BN的原理和公式,但是创建 BN 这个方法的出发点和一些边界问题的思考始终萦绕在周围。在此做一个汇总整理,旨在帮助和我一样有此困惑的朋友们。

2 原理

2.1 优化原理

训练网络深度的加深可能会带来梯度迭代上的梯度消失(Gradient Vanishing)或者梯度爆炸(Gradient Explore)问题。这两个问题的产生原理这里不做赘述,一般都是由于网络层数过深,梯度链式传导带来的结果。

阅读全文 »

SNE 和 t-SNE 算法

发表于 2021-03-04 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 3.6k | 阅读时长 ≈ 14

1 引言

实际研究中有很多的降维算法,例如经典的线性降维算法PCA,相信很多人都比较熟悉了。而在这里,我们要介绍的是一个经典的降维算法t-SNE,它往往用来对高维数据做非线性降维来进行可视化分析。参考了不少大牛的文章,加上一些自己的思考,从一个小白的角度来总结一下该算法的原理和使用姿势。

1.1 维数灾难

维数灾难(curse of dimensionality):描述的是高维空间中若干迥异于低维空间、甚至反直觉的现象。

在这里我们要阐述两个理论:

  1. 高维空间中数据样本极其稀疏。
    如下图所示,高维数据降维到低维空间将发生“拥挤问题(Crowding Problem)。
阅读全文 »

word2vec 详解

发表于 2020-12-13 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 3.8k | 阅读时长 ≈ 14

1 引言

很多算法工程师认为 Embedding 技术是机器学习中最迷人的一种思想,在过去的近10年中,该技术在各个深度学习领域大放异彩。已经逐步进化到了近几年基于 BERT 和 GPT2 等模型的语境化嵌入。本文重点基于原始论文Efficient Estimation of Word Representations in Vector Space,整理 word2vec 相关技术的基础原理和应用经验,旨在利于自己回溯巩固和他人参考学习。

首先 Embedding 的思想是如何来的呢?我们知道计算机底层只能识别数字,并基于其进行逻辑等计算。而世间大多的实体或概念都不是以数据形式存在的,如何让计算机能够记住甚至理解是一件很难的事情。

阅读全文 »

深度学习中的激活函数们

发表于 2020-06-18 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 1.7k | 阅读时长 ≈ 6

1 背景

本文参考多方资料总结了一下当前在深度模型中常遇到的几种激活函数。

在神经网络中,激活函数主要有两个用途:

  • 引入非线性
  • 充分组合特征

其中非线性激活函数允许网络复制复杂的非线性行为。正如绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分的)。此外,复杂的激活函数也许产生一些梯度消失或爆炸的问题。因此,神经网络倾向于部署若干个特定的激活函数(identity、sigmoid、ReLU 及其变体)。
因此,神经网络中激励函数的作用通俗上讲就是将多个线性输入转换为非线性的关系。如果不使用激励函数的话,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过激励函数引入非线性因素后,使神经网络的表达能力更强了。

阅读全文 »

布谷鸟过滤器(Cuckcoo Filter)

发表于 2020-05-29 | 分类于 学习笔记 , 算法总结 |
| 字数统计: 2.1k | 阅读时长 ≈ 7

1 背景

在了解了布隆过滤器的缺点之后,如果想要解决就可以来学习一下布谷鸟过滤器。其最早是在2001年的论文《Cuckoo Filter: Practically Better Than Bloom》中提出的。论文中也很直接的抨击布隆过滤器的缺点,表明自己可以有效支持反向删除操作。

2 原理

先来介绍最简单的布谷鸟过滤器的工作原理。假设我们有:

  • 两个Hash表,T1和T2;
  • 两个Hash函数,H1和H2。
阅读全文 »
<1234…8>

73 日志
14 分类
85 标签
RSS
GitHub E-Mail
© 2019 — 2025 小火箭
由 信仰 强力驱动
|
博客全站共314.2k字
访客数 人 总访问量 次