失去的二十年:日本经济长期停滞的真正原因
《失去的二十年:日本经济长期停滞的真正原因》— 池田信夫
「毅然抛掉明天会比今天更好的期待,学会知足常乐。」
「整个社会将会向着强调个人能力的方向发展。」
「所谓和平,其实质就是既得权利得到保护。」
简介
本书作者池田信夫从经济政策、雇用制度说明了日本过去二十年经济长期停滞的状况和深层原因。
经济政策
日本政府的经济政策目的在于填补 GDP 缺口(GDP 缺口 = 潜在增长率 - 实际增长率),其中对经济长期发展起决定作用的是潜在增长率。而潜在增长率可细分为三个要素:资本投入、劳动投入和生产力。其中最重要的就是生产力(从广义上来说就是指创新),
日本的经济泡沫本质是大规模的信用泡沫。
雇用制度
日本社会目前倡导的年功序列制,,并不能符合当前信息技术高速发展的需求。年功序列制过于保护正式员工的利益,造成社会劳动者身份严重不平等。
PyTorch的hook机制
1. 简介
钩子编程(hooking),也称作「挂钩」,计算机程序设计术语,指通过拦截软件模块间的「函数调用」、「消息传递」、「事件传递」来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。
hook 在 PyTorch 中是一个非常有用的特性,利用它可以在不必改变网络输入输出结构的情况下,方便地获取、改变网络中间层变量的值和梯度。
2. Hook for Tensors
在 PyTorch 的计算图中,只有叶节点的变量会保留梯度,而所有中间变量的梯度只在反向传播中使用,一旦把向传播完成,中间变量的梯度将自动释放,从而节约内存。如果想在反向传播后保留他们的梯度,则需要使用 retain_grad() 函数特殊指定。
1234567891011121314151617181920212223import torchx = torch.Tensor([0, 1, 2, 3]).requires_grad_()y = torch.Tensor([4, 5, 6, 7]).requires_grad_()w = torc ...
A股交易规则
1. 交易时间
集合竞价时间
集合竞价是用来确定开盘价和收盘价的,分为开盘集合竞价和收盘集合竞价。
开盘集合竞价 9:15-9:25
9:15-9:20 可以挂买卖单,也可以撤销
9:20-9:25 可以挂买卖单,但不能撤销,要等 9:30 后才可以
9:25-9:30 是开盘集合竞价的休息时间,不能挂买卖单,要等 9:30 后才可以
9:25 时会产生一个开盘价,开盘价必须要同时满足三个条件:
① 是成交量是最大的
② 高于开盘价的买入或者低于开盘价的卖出,全部成交
③ 与开盘价相同的买卖双方,有一方全部成交,满足这三个条件的价格,他就是开盘价
收盘集合竞价 14:57-15:00
这期间可以挂买卖单,但不能撤销,在 15:00 整会产生一个收盘价。
2. 交易单位
股票的交易单位是手,一手就是 100100100 股,要按 100100100 股的整数倍来交易的。卖出可以一次性都卖出,买入必须是 100100100 的整数倍。
3. 涨跌幅制度
大部分股票当天涨跌幅度为昨天收盘的正负 10%10\%10%。
ST 股当天涨跌幅度为昨天收盘的正负 5%5\%5%。 ...
强化学习概述
1. 定义
通过从交互中学习来实现目标的计算方法:
强化学习主要包括三个方面:
感知:在某种程度上感知环境的状态
行动:可以采取行动来影响状态或者达到目标
目标:随着时间的推移最大化累积奖励
2. 交互
强化学习与环境交互过程如下图:
3. 系统要素
历史(History):是观察、行动和奖励的序列。即一直到时间 ttt 为止的所有可观测变量:
Ht=O1,R1,A1,O2,R2,A2,⋯ ,Ot−1,Rt−1,At−1,Ot,RtH_t = O_1,R_1,A_1,O_2,R_2,A_2,\cdots,O_{t-1},R_{t-1},A_{t-1},O_t,R_t
Ht=O1,R1,A1,O2,R2,A2,⋯,Ot−1,Rt−1,At−1,Ot,Rt
状态(State):一种用于确定接下来会发生的事情的信息。状态是关于历史的函数:
St=f(Ht)S_t = f(H_t)
St=f(Ht)
策略(Policy):是学习智能体在特定时间的行为方式,是从状态到行动的映射。
确实性策略:
a=π(s)a = \pi(s)
a ...
CUDA全局内存
1. 简介
CPU 和 GPU 的主存都采用的是 DRAM(动态随机存取存储器),而低延迟内存(如 CPU 一级缓存)使用的则是 SRAM(静态随机存取存储器)。CPU 和 GPU 在内存层次结构设计中都使用相似的准则和模型。GPU 和 CPU 内存模型的主要区别是,CUDA 编程模型能将内存层次结构更好地呈现给用户,能让我们显式地控制它的行为。
2. CUDA 内存模型
对于程序员来说,一般有两种类型的存储器:
可编程的:需要显式地控制哪些数据存放在可编程内存中;
不可编程的:无法人为决定数据的存放位置,程序将自动生成存放位置以获得良好的性能。
在 CPU 内存层次中,一级缓存和二级缓存都是不可编程的存储器。另一方面,CUDA 内存模型提出了多种可编程内存的类型:
寄存器:GPU 上运行速度最快的内存空间。核函数中声明的一个没有其他修饰符的自变量,通常存储在寄存器中。寄存器变量对于每个线程来说都是私有的,寄存器变量的生命周期与核函数相同。
共享内存:一个线程块有自己的共享同存,对同一线程块中所有线程都可见,其内容持续线程块的整个生命周期。
本地内存:一个核函数中的线程 ...
LightGBM算法详解
1. 简介
LightGBM 是一个高性能的分布式梯度提升决策树框架,可以用于分类、回归、排序任务等,属于监督学习算法。LightGBM 属于 Boosting 的一种,Boosting 是指用一系列的模型线性组合起来完成模型任务。Boosting 分为两种:
Ada Boost:根据当前的 Loss 来改变样本权重,比如这个样本在学习中误差比较大,则获得一个大的权重,反之获得更小的权重,从而控制后续子模型的产生。
Gradient Boost:直接修改样本 Label,新的样本 Label 将变成原来的 Label 和已知形成的的模型预测值之间的残差。Gradient Boost 更倾向于降低训练误差的角度去完成算法优化。
而 GBDT = Gradient Boosting + Decision Tree,即在 Gradient Boosting 中,每一个 base learner 都是一个 decision tree。
2. 决策树
决策树的学习过程可以分为两种:
Leaf-wise Learning:在学习过程中,我们需要不断地寻找分类后收益最大的叶子节点,然后对其进行 ...
Linux系统用户管理
1. 创建用户
1sudo useradd -m -s /bin/bash -d /data/${username} ${username}
其中,-m 参数表示在创建用户的同时创建用户的主目录;-s 参数用来指定用户默认的 Shell;-d 参数用来指定用户的 HOME 目录路径。
后续如果需要迁移用户主目录,可以使用以下命令:
1sudo usermod -d ${newdir} -m ${username}
2. 设置密码
用户刚创建时需要管理员给用户设置密码:
1sudo passwd ${username}
一旦用户登录后,用户可以自己修改密码 passwd,或者让管理员继续以 sudo 权限帮忙修改密码 sudo passwd ${username}。
3. 权限操作
sudo 权限
给予用户 sudo 权限:
1sudo usermod -aG sudo ${username}
撤销用户 sudo 权限:
1sudo gp ...
并行异构计算概述
GPU vs. CPU
CPU 计算适合处理控制密集型任务,GPU 计算适合处理包含数据并件的计算密集型任务。
CPU 核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。
GPU 核心比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。
GPU 不是一个独立运行的平台而是 CPU 的协处理器,因此 GPU 必须通过 PCIe 总线与基于 CPU 的主机相连来进行操作。CPU 所在的位置被称作主机端,而 GPU 所在的位置被称作设备端。
NVIDIA 公司的 GPU 计算平台有以下产品:
产品系列
说明
Tegra
专为移动和嵌入式设备而设计的,如平板、手机
GeForce
面向图形用户
Quadro
用于专业绘图设计
Tesla
用于大规模的并行计算
Fermi
是 Tesla 系列中的一种,在高性能计算中得到广泛应用。世界上第一款完整的 GPU 计算架构
Kepler
Fermi 之后的新一代 GPU 计算架构
描述 GPU 容量有两个重要特征:
CUDA 核心数量
内存大小
相应的有两种不同 ...
拉格朗日乘子法
1. 简介
拉格朗日乘子法是一种寻找多元函数在其变量受到一个或多个条件的约束时的局部极值的方法。这种方法可以将一个有 nnn 个变量与 kkk 个约束条件的最优化问题转换为一个解有 n+kn+kn+k 个变量的方程组的解的问题。
2. 方法
2.1 拉格朗日乘法定理
设 f:Rn→Rf: \mathbb{R}^n \rightarrow \mathbb{R}f:Rn→R 为目标函数,g:Rn→Rcg: \mathbb{R}^n \rightarrow \mathbb{R}^cg:Rn→Rc 为约束函数,二者有连续的一阶导数。令 x∗x_*x∗ 为下列问题的一个最优解,使得 rank(Dg(x∗))=c<n\mathrm{rank}(D g(x_*)) = c < nrank(Dg(x∗))=c<n,其中 Dg(x∗)D g(x_*)Dg(x∗) 表示偏导矩阵 [Dg(x∗)]j,k=[∂gj∂xk][Dg(x_*)]_{j, k} = \left[\frac{\partial g_j}{\partial x_k}\right][Dg(x∗)]j,k=[∂xk ...
Nano编辑器入门
1. 简介
Nano 编辑器是很多 Linux 发行版默认配备的命令行编辑器。尽管可以将系统默认配置修改成 vi/vim 等功能更强大的编辑器,但每个环境都修改配置未免过于麻烦。因此,掌握 Nano 编辑器的基本使用还是有必要的。
2. 常用快捷键
在 Nano 编辑器页面中,会给出一些快捷键提示,其 ^ 符号表示 Ctrl 键,其 M 符号表示 Alt 键。
快捷键
说明
Ctrl+A/Ctrl+E
将光标移动到行首/行尾
Ctrl+Y/Ctrl+V
向上/下翻页
Ctrl+Shift+-
将光标移动到特定位置
Alt+A/Ctrl+6
设置/取消标记,结合「方向键」可选中文本
Alt+6
复制选中的文本
Ctrl+K
剪切选中的文本,未选中文本则剪切整行
Ctrl+U
粘贴选中的文本/整行
Alt+U
撤销上一次操作
Alt+E
重做上一次操作
Ctrl+W,Alt+W
前者搜索文本,后者移动到下一个匹配点
Ctrl+\
搜索和替换
Ctrl+O
保存修改
Ctrl+X
退出编辑
Ctrl+G
打开帮助文档
...
ArchLinux安装ibus-rime输入法
1. 简介
ArchLinux 下一般都推荐安装 fcitx 或者 fcitx5,但是没想到即使是 fcitx5 还是存在很多问题。本文就是写于我的 ArchLinux 上 fcitx5 无法使用 rime 输入法之际,寻求解决方案无果后,只能转而使用 ibus。
2. 安装
在安装 ibus-rime 之前,需要先将 fcitx5 的环境(如果有的话)清除掉。最简单暴力的方法就是将 fcitx5 及其相关包卸载,另一种方法就是保留应用程序,但将其启动设置关闭,以备后来想换回 fcitx5。本人就是采用后一种方法,具体来说:
将 fcitx5 的开启自启程序关闭:ArchLinux 下程序的自启脚本主要在以下两个目录中
12~/.config/autostart # 用户自启脚本目录/etc/xdg/autostart # 系统自启脚本目录
其中,~/.config/autostart 中的自启项,可以到「System Settings」->「Startup and Shutdown」->「Autostart」中删除对应程序即可。对于 /etc/xdg/autostar ...
Mac终端Shell命令Open
1. 简介
Mac 下手动打开目录、文件和应用程序等和 Windows 都很一不样,用惯 Windows 的用户刚开始使用 Mac 系统可能会非常不习惯。好在 Mac 下有一个非常方便的命令行工具 open,它能很方便地打开 Mac 上的目录、文件和应用程序。
2. 格式
12345678910111213141516171819202122232425Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-s <partial SDK name>][-b <bundle identifier>] [-a <application>] [-u URL] [filenames] [--args arguments]Help: Open opens files from a shell. By default, opens each file using the default application for that file. If the file is in the fo ...