7 Matching Annotations
  1. Oct 2018
    1. 关于转导学习 和 归纳学习

      • 迁移学习 transfer learning
      • 转导学习 transductive learning
      • 归纳学习 inductive learning
      • 非监督学习 unsupervised learning
      • 自学习 self-taught learning
      • 多任务学习 multi-task learning

      其中,后五者其实都可以看做迁移学习的子类。

      转导学习与归纳学习的典型算法

      转导学习的典型算法是 KNN:

      1. 初始化 K(超参,自选) 个中心点。
      2. 新来的数据会将其直接用来计算与每个中心点的距离。
      3. 取所有距离中最小的距离所对应的中心点作为该新数据点的“簇”。
      4. 重新计算该簇(加入中心点的簇需重新计算)中心点。

      由上述过程可见:

      我们使用了 unlabeled data 作为测试集数据,并使用之决定新的中心点(新的分类簇)

      这就是课件中所说的:

      Transfuctive learning: unlabeled data is the testing data.

      归纳学习的典型算法是 Bayes:

      \(P(y|x) = \frac{P(x|y)P(y)}{P(x)=\sum^K_{i=1}{P(x|y_i)P(y_i)}}\)

      通过 count-based methodNaive Bayes 或者 Maximum Likelihood(详见 lec5 笔记)(

      \(P([1,3,9,0] | y_1)=P(1|y_1)P(3|y_1)P(9|y_1)P(0|y_1)\) ) 先计算出:

      \(P(x|y_1)P(y_1)\)

      \(P(x|y_2)P(y_2)\)

      \(P(x|y_3)P(y_3)\)

      ...

      然后就可以带入 Bayes 公式,就可以得到一个模型公式。

      \(P(y|x) = \frac{P(x|y)P(y)}{P(x)=\sum^K_{i=1}{P(x|y_i)P(y_i)}}\)

      由此可见,inductive 和 transductive 最大的不同就是,前者会得到一个通用的模型公式,而后者是没有模型公式可用的。新来的数据点对于 inductive learning 可以直接带入模型公式计算即可,而 transductive learning 每次有新点进来都需要重新跑一次整个计算过程。

      对于通用模型公式这件事,李宏毅老师 lec5-LogisticRegression and Generative Model 中提到:

      Bayes model 会脑补出数据集中没有的数据。

      这种脑补的能力会使得他具有一些推理能力,但同时也会犯一些显而易见的错误。

      而 transudctive learning 则是针对特定问题域的算法。

      转导学习与归纳学习的概率学背景

      在 inductive learning 中,学习器试图自行利用未标记示例,即整个学习过程不需人工干预,仅基于学习器自身对未标记示例进行利用。

      transductive learning 与 inductive learning 不同的是

      transfuctive learning 假定未标记示例就是测试例

      学习的目的就是在这些未标记示例上取得最佳泛化能力

      换句话说:我处理且只处理这些点

      inductive learning 考虑的是一个“开放世界”,即在进行学习时并不知道要预测的示例是什么,而直推学习考虑的则是一个“封闭世界”,在学习时已经知道了需要预测哪些示例。

      实际上,直推学习这一思路直接来源于统计学习理论[Vapnik],并被一些学者认为是统计学习理论对机器学习思想的最重要的贡献1。其出发点是不要通过解一个困难的问题来解决一个相对简单的问题。V. Vapnik认为,经典的归纳学习假设期望学得一个在整个示例分布上具有低错误率的决策函数,这实际上把问题复杂化了,因为在很多情况下,人们并不关心决策函数在整个示例分布上性能怎么样,而只是期望在给定的要预测的示例上达到最好的性能。后者比前者简单,因此,在学习过程中可以显式地考虑测试例从而更容易地达到目的。这一思想在机器学习界目前仍有争议

  2. Sep 2018
    1. semi-supervised 经典假设-2:Smoothness Assumption

      半监督学习的第一个假设是 非黑即白,进阶版是未必非黑即白,也差不多,基于这个假设我们有了算法 self-training(hard-label) 和 entropy-based regularization。

      半监督学习的第二个知名假设是 近朱者赤,近墨者黑

      不精确的说法: Assumption: "similar" x has the same y.

      精确的说法:

      1. x is not uniform.
      2. if x1 and x2 are close in a high density region, y1 and y2 are the same.

      解释下上面这句话的意思:

      如果 x 的分布是不平均的,有些地方很集中,某些地方很分散。如果两个 x 样本,x1 x2 在一个高密度区域内很近的话,那么他们的标签应该一样。

      一言以蔽之,相近一个必须的前提是:这两个点必须经过一个稠密区间相连。 connected by high density region.

      形象一点该如何理解 稠密区间 呢?也就是一个样本和另一个样本之间存在连续的渐进变换的很多样本,那么就说明两者之间存在稠密区间。

      举例说明:

      1 <====> 11 <-------> 15

      1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ___, 15

      • <====> 表示这里有很多渐变的无标数据点
      • <-------> 表示这里几乎没有无标数据点
      • 只有 1 和 15 是带标数据,其他都是无标数据。

      我们如何判断无标数据 11 的标签?

      ‘1’ 和 ‘11’ 之间存在稠密区间,则两者的label应该是一样的。‘11’ 和 ‘15’ 之间不存在稠密区间。

      这招在文档分类中,作用颇大。Classify astronomy vs. Travel articles.我们做文档分类是基于文档的vocabulary是否存在较大重叠,但是由于人类使用的词汇是如此的多,不同的人对同一个意思会使用不同的词汇去表达,所以文档之间的单词重叠的非常少,这时候就可以借助high density region的假设,只要两个文档之间(一个带标一个无标)存在连续的渐变的很多文档,就可以判断两个数据点具有相同的标签。

      天文:文档1 = [asteroid, bright]

      _ :文档2 = [bright,comet]

      _ :文档3 = [comet,year]

      _ :文档4 = [year,zodiac]

      文档1 与 文档2 标签一致;

      文档2 与 文档3 标签一致;

      文档3 与 文档4 标签一致;

      所以 文档1 与 文档4 标签一致;

      平滑假设下的 smei-supervised 算法框架

      一,构建 pseudo 数据集阶段

      1. 获取 pseudo labels of unlabeled dataset by smoothness assumption and labeled dataset
      2. 将 pseudo label 当做真实 label, 完成数据集构建

      二,supervised learning 算法阶段

      1. function set
      2. loss function
      3. minimize (2) to get the best function from (1)

      一,构建 pseudo 数据集阶段

      平滑度假设下的 pseudo label 获取算法1:cluster and then label

      1. 首先不论带标还是不带标,都当做无标数据点做 clustering。
      2. 做完之后,看每个 cluster 中哪种label的数据点最多,这个 cluster 的所有点就属于这个label。

      注意:clustering then label, 这个方法未必会有用啊,只有在你可以把同一个类 cluster 在一起的时候才有可能有用,如果是图像分类并且用 pixel 做clustering,就非常苦难,基于像素的距离做 clustering 本身就不太可能把同一类 cluster 在一起(同一个 class 可能在像素级别很不像,比如数字识别中像‘1’的‘4’和像‘9’的‘4’;不同 class 可能像素级别很像‘1’和‘4’,‘9’和‘4’),这第一步误差就这么大(各种分类的数据点混在一起),第二步不论怎么搞都不可能有太好的准确率。

      所以,如果要用这个 cluster then label 算法的话,你的 cluster 要非常强,也就是第一步的准确率要足够高。一般使用 deep autoencoder 中间的 code 做 cluster,而不是像素。

      平滑度假设下的 pseudo label 获取算法2:graph-based approach

      cluster, then label 是一种比较直觉的做法,另一种做法是通过引入 graph structure 来做。用 graph structure 来表达 connected by a high density path 这件事

      数据集映射成一个 graph, 每个数据都是图中的一个点。你要做的就是定义并计算两两之间的 similarity,这个similarity就是 graph 中两点之间的边(连线)。

      构建graph之后:

      1. 相连 --- 同类
      2. 不连 --- 不同类

      但是 similarity 也就是 “边” 很多时候不是那么明显的可以定义出来。如果是网页分类,那么网页之间的连接可以看做是一种similarity(医疗的网页应该不会连接到游戏网页),这很直觉。论文分类,论文的索引也可以用在“边”。但更多时候,你需要自己去定义。

      算法2 该如何构图

      graph construction: 该如何构造一张图呢?

      一, define the similarity \(s(x_i, x_j)\) between xi and xj.

      (可以基于像素或者更高阶的方法是用 deep autoencoder 来做相似度),李宏毅教授推荐使用 RBF function 定义相似度:

      \(s(x_i, x_j) = exp(-\gamma||x_i - x_j||^2)\)

      如果想使用欧几里得距离衡量相似度,最好使用 RBF function 作为 similarity function. 为什么呢?因为RBF是一个衰减很快的函数,只要 xi xj 距离稍微远一点相似度就急剧下降。只有具备这种性质,你才能构造出较好的 cluster,他虽然不能保证同簇的相似度高,但至少可以保证不同簇的相似度一定较低(跨簇的距离更大一些的话)。

      二, add edge

      方法1: 可以使用 KNN 建立“边”,每个点都与相似度最近的 K 个点相连: \(|V_{x_i->[x_j]_{j=1}^K}| = argmax_{D'\subset{D}, |D'|=K}s(x_i, x_j)\)

      方法2: 可以使用 e-Neighborhood 方法建立“边”,所有与 xi 相似度大于 e 的数据点都与 xi 建立连接。

      三,edge weightedge

      可以带有权重,他可以与相似度成正比。

      graph-based approach 方法的核心精神标签传染: graph 中的带标节点会依据“边”来传递自己的“标”,而且会一直“传染”下去。

      graph-based approach 方法的核心缺点数据量必须够大: 基于图的传染机制,如果数据不够多,没收集到位,那么本来相连的图由于数据量不够就可能断连,一旦断连就没法传染了。

      二,supervised learning 算法阶段

      1. function set --- defined by DNN
      2. loss function --- defined below
      3. optimize: train DNN

      我们基于以下认知和观察,来定义 loss functin 用以衡量 DNN 训练出的模型的好坏:

      1. 是否可以直接使用 cross-entropy,不加任何“佐料”?

      2. pseudo labels 是在近朱者赤近墨者黑的假设下产生的,不管产生的算法是什么,他都可以看成是一个函数,这个函数是如此特殊他就像是ground truth function(监督学习下,我们不知道的那个f) 一样产生了我们以为真实的标签,所以,我们需要做的是去逼近这样的函数

      3. 我们能做的是,通过 loss function 来“诱导”优化器往这个特殊的函数去优化。

      4. 我们像产生 pseudo labels 的算法那样利用数据集 x 的距离模拟 density 来增加限制,但我们可以通过对标签来近似这种限制,我们可以看到同一个类的标签之间差距很小类和类之间的标签差距很大,但是(构造 pseudo label 时用到的边的weight)同类数据点的边的weight很大,而不同类的数据点的边的weight很小。我们设置两点之间的标签差值乘以两点之间的边的权重作为限制, 希望他不要太大,以此来近似同类标签数据是高密度的这件事,虽然这是一种普杀式的限制 --- 他同样会限制类间标签的差异,但是考虑不同类两点的边权重很小,相乘之后影响较少,这种方法还是可以接受的。

      \(S = \frac{1}{2}\sum_{i,j}w_{i,j}(y_i - y_j)^2\)

      这个值越小,说明越平滑。

      进一步化简这个公式,用矩阵的形式书写(引入 Graph Laplacian):

      把带标和无标的(预测)标签拼在一起,形成一个长向量: \(\vec{y} = [...y_i, ..., y_j...]^T\)

      \(S = \frac{1}{2}\sum_{i,j}w_{i,j}(y_i - y_j)^2 = \vec{y}^TL\vec{y}\)

      L: (R+U) * (R+U) matrix

      L 可以写成两个矩阵相减: \(L = D - W\)

      • W 是两两节点之间的“边”的权重矩阵
      • D 是把 W 矩阵每行值相加放在对角线上,其余设为0.形成的矩阵。

      现在把这个 smoothness 公式与loss-fn 统合起来,形成一个新的代价函数:

      \(L(\Theta) = \sum_{x^r}C(y^r, \hat{y}^r) + \lambdaS\)

      这个 \(\lambdaS\) 有点像是一个正则项,你不仅仅要调整data 让那些 label data 与真正的 label 越接近越好,同时还要做到你预测的标签(包括代标数据和无标数据)要足够平滑。

      在 DNN 中 smoothness 的计算不一定是在 output layer 哪里才计算,而是在任何隐含层都可以(就像 L2 正则项可以加载任何层一样,keras API)可以从某一层输出接触一个 embedding layer 保证这个 embedding layer 是 smooth 的即可, 也可以完全套用 L2 的模式 --- 在每一个隐含层都加入这个正则项,要求每一层的输出都是 smooth 的。

      J.Weston, F.Ratle, "Deep learning via semi-supervised embedding," ICML, 2008

      注意事项1: 两个 similarity

      上面的算法框架中出现过两次 similarity 公式:

      1. 第一次在产生 pseudo 数据集部分的 graph-based 算法中。
      2. 第二次在监督式方法训练部分的 定义 loss function 中。

      其中产生 pseudo 数据集部分,‘similarity’ 是 “similarity of x” --- 计算两个点之间的距离(eg,RBF function)以此作为是否连线两点的依据,而距离作为边的权重。

      而在训练模型的部分,‘similarity’ 是 ‘similarity of y’ 我们用 y 之间的距离不宜过大来近似 'similarity of x'

    2. lec 12 总结

      注意事项2:两个假设

      Semi-supervised 部分我们介绍了两个假设,

      • 其一为 low density separation;
      • 其二为 high density region.

      两个假设都是为了通过有标数据产生无标数据的标签。这一步仅仅是准备数据集,并没有训练任何模型,他就像是监督学习中,产生数据集的那个我们不知道的函数

      而我们在训练模型时,必须要考虑到这个特殊的“函数”,也就是我们训练模型的时候需要让给与训练过程一些限制,让优化器朝着这两个假设的方向去优化函数:

      • 在 low density separation 假设中,我们对模型做的做的改进是仅仅使用非黑即白的标签作为无标数据的“真实”标签,更进一步改进“未必非黑即白,但也差不多”,是给 Loss function 加入 entropy based 正则项来约束模型预测的标签使其更集中

      \(L = \sum_{x^r}C(y^r, \hat{y}^r) + \lambda\sum_{x^u}E(y^u)\)

      • 在 high density region 假设中,我们对模型做的改进是给 Loss function 加入 smoothness 正则项来约束模型预测的标签使其更平滑。

      \(S = \frac{1}{2}\sum_{i,j}w_{i,j}(y_i - y_j)^2 = \vec{y}^TL\vec{y}\)

      \(L(\Theta) = \sum_{x^r}C(y^r, \hat{y}^r) + \lambdaS\)

      三种产生标签(产生数据集)的方式对比

      1. semi-supervised learning for generative model
      2. semi-supervised learning under low density separation assumption
      3. semi-supervised learning under high density region assumption

      EM 系算法产生标签(边产生边更新) -----

                      |--- 生成模型: 初始化prior proba, 预测无标,更新 prior proba
                             |--- 归纳学习,产生model,标签为实数 
      
      
                      |--- low density separation: 用带标产生 f,预测无标,更新 f
                             |--- 归纳学习,产生model,标签为整数
      

      非 EM 系算法产生标签(先构造后产生)----

                      |--- high density region using **cluster and label**: 先构造簇,整簇分为标签最多者
      
                      |--- high density region using **graph-based algo**: 先构造图,相连的分为一类(同标签)
      
    3. looking for better representation

      去芜存菁,化繁为简

      他的核心要旨是:我们所见的世界虽然很复杂,但在复杂背后隐含着比较简单的要素(factor)在操控复杂的世界,如果能窥见一二就可以搞定。

      这个 latent factors 就是 better representions.

    4. semi-supervised 经典假设-1:Low-density Separation Assumption

      low-density separation 这个假设的意思是说非黑即白, 亦即两个class的数据点之间有一条明显的鸿沟,亦即两个class之间的data量是很少的

      Low-density Separation Assumption 最具代表性的算法就是 self-training

      self-training 算法
      1. Labeled data set and unlabeled dataset
      2. repeat from step 3 to step 5:
      3. train model f* from labeled data set, 你用什么方法去 train 这个无所谓,可以用任何方法只要能train一个model出来即可。
      4. 根据 f* 去给不带标签的数据打标签(pseudo-label)
      5. 从不带标签数据集中挑选出一些数据经过步骤 2.2 获得 label 并加入 labeled data 数据集中。比如你可以根据 pseudo-label 的置信度(比如经过 softmax 的概率值)来给 data 加入 weight

      关于这个 self-training 算法的几个注意点

      毫无疑问, regression 问题无法使用self-training

      self-training 是从带标数据集得到一个函数 f, 然后用这个函数去求一个值 y = f(x), x是无标数据, 然后再把这个 (x,y) 加入代标数据集中,这个 y 本身就是通过 f(x) 得到的,他怎么可能改变 f 呢。所以 f 根本就不会变。所以 regression 不能使用这个算法来做。为什么呢,因为 regression 得到的是一个实数,而不是离散的分类。

      self-training( 半监督学习 Low density 假设下的算法) 算法看起来跟 EM (semi-supervised for Generative model)算法很不一样

      两者看起来相似:

      1. 先算出一个模型
      2. 通过模型预测无标数据的标签
      3. 无标数据标签会反噬原模型更新为的模型。

      EM-generative model算法(KNN算法,transductive 学习通用框架):

      1. 模型:任意初始化一个先验概率模型 P(x|C), P(C) 等
      2. 预测:用这些先验概率通过 bayes 预测无标数据点的标签
      3. 反噬:由于步骤2产生了新的带标数据,所以带标数据集改变了,P(x|C), P(C) 的值肯定也就改变了,更新之。

      self-training 算法:

      1. 模型:通过带标数据训练一个模型 f
      2. 预测:利用 f 得到无标数据的标签
      3. 反噬:将新产生的标签当做新的带标数据加入数据集,并重新训练 f。

      两者的不同在于,

      • generative model 算法使用的是 Soft label(更新先验概率(model)的时候我们都是使用unlabeled data能近似多少个labeled data的思想),
      • self-training 算法使用的是 Hard-label.

      举例:

      • f(x)= [0.3, 0.7] 对于 hard-label, 新产生的带标数据(x,y) 是 (x, [0,1])
      • f(x)= [0.3, 0.7] 对于 soft-label, 新产生的带标数据(x,y) 是 (x, [0.3, 0.7])

      毫无疑问,如果是 self-training 使用 DNN 来训练的化, soft-label 完全没用啊,这点和 regression 问题无法使用 self-training 的道理是一样的。你的标签本身就是你的NN得到的一模一样的值,你重新将其加入数据集,他根本不会更新 NN 的参数。

      核心本质:

      我们使用 Hard-label 时我们在使用什么?我们在使用假设 Low density separation* --- 非黑即白中间地带无数据**.

      self-training (hard-label)进阶版: Entropy-based Regularization

      如果觉得非黑即白太武断了,可以使用 Entropy-based Regularization 方法

      Entropy-based regularization 的意思是 未必非黑即白但也差不多啦

      以刚才的例子来说明:

      • f(x)= [0.3, 0.7] 对于 hard-label, 新产生的带标数据(x,y) 是 (x, [0,1])

      这样规定x的标签太武断了,我们希望标签还是可以保留一些小数,亦即NN的输出还是一个正常的概率分布,但不能是下面这样:

      • f(x)= [0.4, 0.6] 对于 hard-label, 新产生的带标数据(x,y) 是 (x, [0.4, 0.6])

      我们希望可以通过加入某种限制,来实现增加区别度使概率分布更集中的目标。这个限制叫做 entropy of distribution. 他可以告诉我们这个分布集中与否。

      entropy 值越小说明越集中(激光小且集中),最小为0

      \(E(y^u) = - \sum_{m=1}^Uy_m^uln(y_m^u)\)

      根据这个假设,我们可以重新设计 loss-function

      labeled data:

      \(L = \sum_{x^r}C(y^r, \hat{y}^r)\)

      unlabeled data(这里是说之前讨论的通用算法框架步骤2中的预测无标数据的标签):

      \(\lambda\sum_{x^u}E(y^u)\)

      我们希望NN对于无标数据的预测结果(一个概率分布)应该越集中越好。

      综合起来看,就是如下公式:

      \(L = \sum_{x^r}C(y^r, \hat{y}^r) + \lambda\sum_{x^u}E(y^u)\)

      self-training (hard-label)进阶版: Semi-supervised SVM

      参考论文:transductive inference for text classification using SVM

      核心精神就是,

      1. 穷举全部无标数据所有可能的标签组合, 2.(联合带标数据)就组成一种数据集 \(D_i\), 对每一种组合对应的数据集 \(D_i\)都做一次 SVM, 得到一个 \(f^{\star}_i\)。
      2. 对于所有的 \(\{D_i, f^{\star}_i\}\) pair,看哪一个pair分的最好(最大margin且最小error)。就选取这个 \(f^{\star}\) 作为最终模型

      遗留问题:

      穷举 怎么做?论文中给出了一个近似的方法,每次该一个无标数据点的标签,看看 SVM 是否会变好,如果可以的话就改。

    5. why semi-supervised learning?

      • 收集数据简单,收集标签困难
      • 作为人类,我们的学习方式也是 semi-supervised learning --- 从课堂到自学,从老师到无师。

      unlabeled data 虽然只有数据没有标签,但是 unlabeled data 的分布可以告诉我们一些东西。比如可以告诉我们什么样的边界是更好的。

      semi-supervised learning 使用 unlabeled data 的情况经常伴随一些假设。semi-supervised learning 有没有效果就取决于你的假设好不好。

      semi-supervised learning 未必有用,这取决于你的假设是否足够好。

      semi-supervised learning for Generative Model

      回忆之前讲过的 Supervised Generative Model, 我们假设每一个 class 的数据点的分布都是一个 gaussian distribution(类的分布共享 \(\Sigma\)):

      \(P(x|y_1) \sim G(\mu_1, \Sigma)\) \(P(x|y_2) \sim G(\mu_2, \Sigma)\)

      得到 prior proba 然后就可以根据公式得到 posterior proba:

      \(P(y_1|x_{new}) = \frac{P(x_{new}|y_1)P(y_1)}{P(x_{new}|y_1)P(y_1) + P(x_{new}|y_2)P(y_2)}\)

      对于 semi-supervised Generative Model, 由于我们多了很多 unlabeled data, 这回改变我们对原来(仅仅通过 supervised Generative Model)获取的分布的认知。就像 KNN 每个新来的数据都会改变原来的中心点的位置。

      算法

      1. Initiliazation: \(\Theta = \{P(C_1), P(C_2), \mu_1, \mu_2, \Sigma\}\)
      2. step1: compute the posterior probability of unlabeled data: \(P_{\Theta}(C_1|x^{\mu})\)
      3. step2: update model:

      3.1 update prior proba:

      \(P(C_1) = \frac{N_1 + \Sigma_{x^{\mu}}P(C_1|x^{\mu})}{N}\)

      \(N\): total number of examples

      \(N_1\): number of examples belonging to C1

      \(x^u\): unlabeled data

      这里注意,supervised learning 中计算 \(P(C_1)\)的公式是:

      \(P(C_1) = \frac{N_1}{N}\)

      现在需要考虑 unlabeled data 对于分类的贡献。

      我们可以把 Posterior praba \(P(C_1|x^u)\) 近似的理解成 (xu贡献的)C1的出现次数,毕竟概率也可以看做是(0.7个,0.5个。。。),我们只要加总所有样本对于 C1 的后验概率,就可以将其近似的理解成 unlabeled data 贡献的分类数据。

      \(\Sigma_{x^{\mu}}P(C_1|x^{\mu})\)

      3.2 update \(\mu_1\)

      这里注意,supervised learning 中计算 \(\mu_1\)的公式是:

      \(\mu_1 = \frac{1}{N_1}\Sigma_{x^r\in{C_1}}x^r\)

      现在需要考虑 unlabeled data 对于分类的贡献。

      对于 unlabeled data 我们同样需要借用 posterior probability 来计算 unlabeled data 的 weighted sum 的平均。

      \(\frac{1}{\sum_{x^u}P(C_1|x^u)}\sum_{x^u}P(C_1|x^u)x^u\)

      1. back to step 2

      理论上这个方法会收敛,但是初始值对结果的影响非常大。同时这个方法也可以理解为 EM 算法。

      maximum likelihood of unlabeled data vs. that of labeled data

      两者最大的区别是前者只能通过 EM 算法进行 iteratively 解;后者有公式解。

      我们是通过【 Maximum likelihood 来找到分类为 Ci 的样本点的最有可能的高斯分布】来求得 Prior proba \(P(x|C_i)\), 我们优化的公式很好解:

      \(logL(\Theta)=\sum_{x^r}logP_{\Theta}(x^r, \hat{y}^r)\)

      但是对于 unlabeled data 我们怎么估测 \(logL(\Theta)\) 呢?

      \(logL(\Theta) = \sigma_{x^r}logP_{\Theta}(x^r) + ?\)

      这里的思想与【把\(P_{\Theta}(C_i|x^u)\)看做 \(x^u\) ‘贡献’的‘次数’】思想类似,只不过利用的是 Prior probability因为我们并不知道 \(x^u\)的分类是多少,所以他可能属于任何分类

      所以这里 \(P_{\Theta(x^u)}\) 应该等于 \(x^u\) 与每个分类的联合概率的和:

      \(P_{\Theta}(x^u)=P_{\Theta}(x^u|C_1)P(C_1) + P_{\Theta}(x^u|C_2)P(C_2)\)

    6. Introduction

      Unlabeled data: \(U\), from \(u=R\) to \(u=U+R\)

      Labeled data: \(R\), from \(r=1\) to \(r=R\)

      Supervised learning:

      \( \{(x^r, \hat{y}^r)\}^R_{r=1}\)

      Semi-supervised learning:

      \( \{(x^r, \hat{y}^r)\}^R_{r=1}\) ,\(\{x^u\}^{R+U}_{u=R}\)

      • U >> R
      • Transductive learing: unlabeled data is the testing data.
      • Inductive learning: unlabeled data is not the testing data.

      直接使用 testing data 不是作弊么,李宏毅老师说,使用 label of testing data 才是作弊。

      transductive learning 的典型算法是 KNN,对于 unlabeled data 我们计算其距离各个中心点的距离。然后重新计算该簇的中心点。可见我们确实使用了 unlabeled data 来学习模型。

      以 kaggle 竞赛为例,有些 kaggle 竞赛是直接可以下载 testing dataset 的,只是 testing data 没有 label 而已。