Life sucks, but you're gonna love it.

0%

第一部分主要讲了Regression。【我曾经纠结于regression的意思很久,在中文regression是回归的意思。刚开始我一直纠结于回归究竟是啥意思,但后来忘记听哪个课,老师说不用在意regression的意思,他没有特别的含义,但是大家一直这么叫regression,所以就用regression了。如果还是纠结就想想高中学的线性回归,好像就没那么神秘了】

Regression类的问题主要用来根据输入量预测某一数值。常见的应用场景有:股票市场,自动驾驶,广告推荐。那么我们来举例看看Regression究竟是怎么用的吧。

Read more »

BLEU score - 机器翻译的衡量标准

BLEU(bilingual evaluation understudy) 被用来衡量双语翻译片段的翻译质量。

他的评价标准也很简单,机器翻译的的结果越接近exprerts的翻译结果,那么机器翻译的效果越好。

Read more »

Chapter 5. Meta Learning

这部分讨论的是如何让机器学习如何学习。一般来说,在我们做机器学习的时候,我们通常会定义某种学习模型,给予这些模型的的初始化参数,定义模型的学习机制/优化算法等等。但是我们在教机器如何学习的时候,我们是想让机器在学习一系列Task之后,在遇到新的模型时,自己去选择模型,选择参数,选择优化算法,然后运用在其他的Task上面。

然后简单介绍Meta Learning的学习步骤,之后会举例说明MAML 和 Reptile两种算法.

Read more »

Evaluation

$R_{i,j}$

  • Accuracy
  • Backward trasfer = (usually negative) 若+就很厉害
  • Forward transfer

Gradient Episodic Memory

$g’ \cdot g^1 \geq 0$

$g’ \cdot g^2 \geq 0$

沿着新的 $g’$ 的方向移动(需要存一些之前的data来算 g1g2)

Model Expansion

已经学不起来了-》扩张model的大小

有策略扩张

  • Progressive Neural Network

    Task 1 训练固定(记住参数

    Task 2 的input 会吃task 1的output

    task越多,hiddenlayer越多

    • Expert Gate

      观察新的任务和之前哪个任务最像 多一个任务多一个model

    • Net2net, 让network长宽

      两个neural是相同的,参数一样的: add small noise

Curriculum Learning

如何在任务上排序

what is the proper learning order?

Dynamic Programming 部分总结

这部分主要总结动态规划。

动态规划最重要的两个点是找:

  1. dynamic state;
  2. state transition equation

语言: Python3

NO.5 Longest Palindromic Substring

1
2
3
4
5
6
7
8
9
10
11
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:

Input: "cbbd"
Output: "bb"

解题思路

假定动态规划矩阵为 DP(i,j),输入字符串为s

  • State:DP(l, r) 每个substring s(l:r)是否为一个palindrome,如果是,赋予True值,如果不是,赋予False值
  • State transition equation:DP(l,r) = True if s(l) == s(r) and DP(l+1, r-1) = True.
  • Base case: DP(l,r) = True if l == r; DP(l,r) = True if s(l) == s(r) and l == r-1;
  • 需要注意的一点是 : l <= r 这样在定义 DP矩阵的时候,只关注矩阵的一半右下角就可以了

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
N = len(s)
memo = [[0]*N for _ in range(N)]
max_len = ''
for i in range(N):
i = N - 1 - i
for j in range(i, N):
if i == j:
memo[i][j] = 1
if 1 > len(max_len):
max_len = s[i:j+1]
elif j - i == 1 and s[i] == s[j]:
memo[i][j] = 1
max_len = max(max_len, 2)
if 2 > len(max_len):
max_len = s[i:j+1]

elif memo[i+1][j-1] == 1 and s[i] == s[j]:
memo[i][j] = 1
if j - i + 1 > len(max_len):
max_len = s[i:j+1]

return max_len

Chapter 2. Attack and Defense

这部分主要来说明对于通过Machine Learning 训练好的模型如何进行攻击 和防止攻击。

Machine Learning 的目的在于通过大量的数据捕捉和学习来完成我们人类要做的事。 我们在第一章讲的大致就是对于异常数据的检测,既然我们的机器有检测异常的能力,那么发布异常的人当然有像一个方法来绕过我们的机器,让这种可以检测异常的模型对异常数据失效。这就构成了对模型的 Attack,我们要先了解敌人才能打败敌人,所以这部分先说明什么是 Attack,之后再讲如何根据恶意的攻击做出防御 Defense。

Read more »

李宏毅 Machine Learning 2019

哇,听闻李宏毅的Machine Learning好久了,这次终于改掉拖延症去听了,我的笔记本用完了,干脆就一并电子存档记录吧,还可以稍微回顾加强一下记忆。

B站地址:https://www.bilibili.com/video/av46561029?p=1

我想说

第一篇主要就是在讲Machine Learning在接下来的发展会如何。我没有听过之前的比如2017的课,不知道是不是也是结合Machine Learning目前的发展然后再引入基础的内容。听的感觉好像这个课的前置课程是有Deep Learning 基础的,因为第一节的时候有提到神经网络中softmax的层这些知识直接拿过来用的。反正和传统从Naive Bayes Classifier开始讲的Machine Learning是不一样的。在第一节课的时候直接提到了Machine Learning目前面临的问题有哪些,可能是个Advanced之类的课程?但是也提到了二分类以及ROC的定义,所以我现在还没弄清这个课的套路,但是讲得比较清晰。个人想法,作为记录。

Intro

这节课就是提到了这门课Machine Learning将会讲到的一些问题:

1 Machine 是否可以知道 “我不知道”?

在通常的对于机器,不管是传统的机器学习还是大规模的神经网络学习的时候,我们对于模型的训练一般是给出标定好的训练集,比如说 我想训练一个模型帮助我识别一张图片是猫还是狗。那么我的训练集这个时候就是一系列猫的图片伴随着“猫”的label,然后有一系列狗的图片伴随着“狗” 的label。这样训练出来的模型,在我们给他一个新的图片的时候,就可以帮我们判断是 “猫” 还是 “狗” 了。

但有一个问题是,现实世界总是奇怪而又复杂的,我们收集训练数据总是有限,就拿这个猫狗识别器为例,如果我就不给你 猫或者狗的图片,反而给你一个企鹅的图片,你的模型有可以告诉我“我不知道这图片上是什么东西”的能力吗?如何才能交给Machine 他识别不知道事物的能力呢? 还是强行将企鹅划分为猫或者狗呢?

2 Machine 是否可以知道 “我为什么不知道”?

这部分将会说明如何让机器知道 “我不知道” 给出的测试图片是什么的原因

3 机器的错觉

我们在训练模型,比如说神经网络的时候,往往并不知道你的神经网络究竟是根据图片的哪个特征得出的结论。比如说,我想训练一个识别“马” 的网络,就从同一个网站上下载了大量的图片,作为训练识别 ”马“ 网络的训练数据。训练好了之后,利用同一个网站上的图片,我还是可以轻易的识别出 哪张图片上有🐴, 哪张图片上没有🐴。但如果换了网站下载 马的图片,便识别不出了。后来发现是因为同一个网站下载的图片都有一个相同的水印表示,训练好的网络并不是学习了马的特征,而是学习了水印的特征。所以 机器错以为水印的特征就是马的特征。

再一个例子,我们训练好的熊猫的分类器,可能在新输入的熊猫的图片上改动一个像素,分类的结果就会发生剧烈的变化。我们称这种改动一小部分就能把训练好的模型攻击到无法正常工作的行为 为: Adversarial Attack。这种技术很危险,比如说在自动驾驶的时候,如果识别的图片被恶意修改,那么汽车将无法判断需不需要停车,或造成错误判断。这部分也会讲到 如何避免 Adversarial Attack.

4 终身学习

人都是会终身学习的,不断学习新的知识,获得新的能力。但对于机器而言,目前我们的策略是对于一项特定的任务,学习一个新的模型。这样会造成一些局限:1. 具有多种能力的机器就需要储存多个不同的模型,在用尽储存空间后就无法学习新的任务;2. 已经训练好的模型也无法帮助机器学习新的任务,无法发挥自身已经学习过的经验;3. 如果对同一个模型先进行任务A再进行任务B的训练,那模型可能在训练完成任务B之后便忘记任务A该如何实现,这被称作 Catastrophic Forgetting。这部分将会讨论机器如何进行终身学习

5 如何学习机器学习

现在说的机器学习的内容,都是我们人工搭建的结构以及给予的训练数据。那我们能不能训练一个模型,让他教机器如何学习呢?换言之,就是是否可以让机器 学习 机器学习?这部分的相关内容被称为 Meta-Learning

6 一定需要很多训练资料吗

这部分提出的问题很切实,如何在训练数据很少或是没有的情况下进行机器学习呢?

  • Few-shot Learning
  • Zero-shot Learning

7 强化学习

强化学习的概念被广泛应用,但是强化学习有一个缺点就是学习的很慢。那强化学习的时间为什么这么慢,有没有办法改进呢?

8 神经网络压缩

这部分将会涉及到对于神经网络压缩的讨论,也就是让神经网络不要占用太多的空间。

  • 减去多余的网络
  • 二元化参数

9 机器学习的谎言

这部分是在说,我们给机器的训练集和测试集真的需要有相同的结构吗?在一些情况加我们得到的测试集,或者是最终应用的场景中的测试集和之前的训练集不同时,机器是否还能保持很高的运行准确率呢? 这部分提到了 Unsupervised Domain Adaption

第一节主要就是讲了一些机器学习现在面临的挑战,第一部分的介绍说的比较清晰是因为我已经听了半节课辽。然后后面的部分的介绍也会在听完课后稍微更新一下,(就看我总结能力有没有提高了

下章见 :)

Intro

之前我们讨论了贝叶斯决策理论,也就是我们在已知随机变量在不同分类的先验概率时,如何对新的变量做出分类。之后我们讨论了,当已知随机变量的分布,但是不知道分布的具体参数的时候,如何从已知的数据来估算参数值。这部分我们进行更普遍的讨论:假定检验。

假定检验

在讨论贝叶斯决策理论的时候,我们讨论的大环境是,对随机变量进行分类,分类可能是 $w_1$ 或是 $w_2$ 类。

在假定检验的时候,我们将这两个条件换一下,设为 $\mathcal{H_0}$ 和 $\mathcal{H_1}$, $\mathcal{H_0}$ 代表 零假设,$\mathcal{H_1}$ 则表示零假设的对立假设。

贝叶斯决策论是假定检验的一个子问题,在贝叶斯决策论中, $w_1$ 表示 $\mathcal{H_0}$ 而与之相对的第二类 $w_2$ 则表示 $\mathcal{H_1}$。 在假定 两种分类的先验概率相同时,我们可以得出 $\frac{p({\bf x} | \mathcal{H_0})}{p({\bf x} | \mathcal{H_1})}$ 若大于1, 则属于 $\mathcal{H_0}$类,反之则属于 $\mathcal{H_1}$ 类。经过简化之后,我们都知道,左边的部分可以化简为一个和 $\bf x$ 相关的方程,右边则为一个实数。若我们将左边的线性方程表示为 $T({\bf x})$, 右侧则为 Bayes decision rule 的阈值 $\mathcal{K_B}$。 我们定义了两类error,都是分类错误的error:

  • 一类是: $p(T({\bf x})>\mathcal{K_B} | \mathcal{H_0}) = \alpha_B$ , 表示 给定