From d27a6b4bf46fc00dc2c7c00052610727184327c1 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Thu, 8 Nov 2018 09:42:23 +0800
Subject: [PATCH 001/134] Update DRA.0.5.md
---
assets/src/DRA/DRA.0.5.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/assets/src/DRA/DRA.0.5.md b/assets/src/DRA/DRA.0.5.md
index 0cc59df1..add13cb9 100644
--- a/assets/src/DRA/DRA.0.5.md
+++ b/assets/src/DRA/DRA.0.5.md
@@ -4,7 +4,6 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 等度量映射(IsometricMapping,Isomap)
等度量映射(Isomap)是最经典的非线性映射降维方法之一,它在MDS的基础上引入了“测地距离”的概念,直接解决了MDS使用欧氏距离无法应对非线性流形的问题。
-
测地距离(Geometric Distance)是高维流形中两点之间的最短距离,高维流形中,空间是不规则的,所以最短距离不一定是直线距离(欧氏距离)。就像蚂蚁从立方体的一面爬到另一面,不能直接横穿立方体一样。
From 0a3b0adeb4708e9bec3a69c08dd7cbf774386a37 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Thu, 8 Nov 2018 09:42:34 +0800
Subject: [PATCH 002/134] Update DRA.0.5.md
---
assets/src/DRA/DRA.0.5.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/src/DRA/DRA.0.5.md b/assets/src/DRA/DRA.0.5.md
index add13cb9..5cc0bdbd 100644
--- a/assets/src/DRA/DRA.0.5.md
+++ b/assets/src/DRA/DRA.0.5.md
@@ -3,6 +3,7 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 等度量映射(IsometricMapping,Isomap)
+
等度量映射(Isomap)是最经典的非线性映射降维方法之一,它在MDS的基础上引入了“测地距离”的概念,直接解决了MDS使用欧氏距离无法应对非线性流形的问题。
测地距离(Geometric Distance)是高维流形中两点之间的最短距离,高维流形中,空间是不规则的,所以最短距离不一定是直线距离(欧氏距离)。就像蚂蚁从立方体的一面爬到另一面,不能直接横穿立方体一样。
From a9f352182bcb2ee75e0d56dab0e0ecfdb226473d Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Thu, 8 Nov 2018 09:43:47 +0800
Subject: [PATCH 003/134] Update DRA.0.6.md
---
assets/src/DRA/DRA.0.6.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/assets/src/DRA/DRA.0.6.md b/assets/src/DRA/DRA.0.6.md
index 1867dc6c..9c0cea4e 100644
--- a/assets/src/DRA/DRA.0.6.md
+++ b/assets/src/DRA/DRA.0.6.md
@@ -3,3 +3,8 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 局部线性嵌入(Locally Linear Embedding)
+数据降维是指通过线性的或非线性的映射关系将高维数据转换成低维数据的过程。一般情况下,该低维数据代表了原始高维数据的主要成分(图1),并描述了原始高维数据的空间分布结构。由于经过降维后的数据更易于被分类、识别、可视化以及存储等,故数据降维技术在诸多科研领域受到了越来越多地关注。
+
+从数据本身的的性质特征来看,数据降维可以大致分为线性降维和非线性降维两种技术方法。其中,线性降维技术仅对于数据维数相对较低、且具有全局线性结构的数据有着很好的降维效果。然而,在实际的科学研究中,科研工作者却需要面对海量的非线性高维数据。因此,能够有效处理高维非线性数据的方法亟待被提出,本文将介绍一种用于处理高维非线性数据的降维方法。
+
+局部线性嵌入(Locally linear embedding, LLE)是一种非线性的降维方法,该算法由 Sam T.Roweis等人于2000年提出并发表在《Science》杂志上。LLE试图保留原始高维数据的局部性质,通过假设局部原始数据近似位于一张超平面上,从而使得该局部的某一个数据可以由其邻域数据线性表示。
From 4e06e3fee81598c3468c2872a6b386b2f22ef873 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Sun, 11 Nov 2018 21:18:11 +0800
Subject: [PATCH 004/134] Update CA.0.2.md
---
assets/src/CA/CA.0.2.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/CA/CA.0.2.md b/assets/src/CA/CA.0.2.md
index 45f66244..074cbff2 100644
--- a/assets/src/CA/CA.0.2.md
+++ b/assets/src/CA/CA.0.2.md
@@ -4,7 +4,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### K-均值(K-Means Algorithm)
-k-means算法,也被称为k-平均或k-均值,是一种得到最广泛使用的聚类算法。 它把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。
+k-means算法,也被称为k-平均或k-均值,是一种得到最广泛使用的聚类算法。 通常它把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。
k-means算法属于无监督学习方法。此算法以k为参数,把n 个对象分为k个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值(被看作簇的重心)来进行。此算法首先随机选择k个对象,每个对象代表一个聚类的质心。对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中。然后,计算每个聚类的新质心。重复上述过程,直到准则函数收敛。k-means算法是一种较典型的逐点修改迭代的动态聚类算法,其要点是以误差平方和为准则函数。逐点修改类中心:一个象元样本按某一原则,归属于某一组类后,就要重新计算这个组类的均值,并且以新的均值作为凝聚中心点进行下一次象元素聚类;逐批修改类中心:在全部象元样本按某一组的类中心分类之后,再计算修改各类的均值,作为下一次分类的凝聚中心点
From 00da4cf6d3da172b93ed92dbff408bc98423d668 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 12 Nov 2018 09:50:42 +0800
Subject: [PATCH 005/134] Update BNS.0.6.md
---
assets/src/BNS/BNS.0.6.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/BNS/BNS.0.6.md b/assets/src/BNS/BNS.0.6.md
index 1673b0bc..49e29537 100644
--- a/assets/src/BNS/BNS.0.6.md
+++ b/assets/src/BNS/BNS.0.6.md
@@ -6,7 +6,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出,它是基于概率推理的图形化网络,可以模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图。而贝叶斯公式则是这个概率网络的基础。贝叶斯网络是基于概率推理的数学模型,所谓概率推理就是通过一些变量的信息来获取其他的概率信息的过程,基于概率推理的贝叶斯网络(Bayesian network)是为了解决不定性和不完整性问题而提出的,它对于解决复杂设备不确定性和关联性引起的故障有很大的优势,在多个领域中获得广泛应用。
-贝叶斯网络的有向无环图(Directed Acyclic Graph,DAG)中的节点表示随机变量
,,由代表变量节点及连接这些节点有向边构成。它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。节点代表随机变量,节点间的有向边代表了节点间的互相关系(由父节点指向其子节点),用条件概率进行表达关系强度,没有父节点的用先验概率进行信息表达。节点变量可以是任何问题的抽象,如:测试值,观测现象,意见征询等。适用于表达和分析不确定性和概率性的事件,应用于有条件地依赖多种控制因素的决策,可以从不完全、不精确或不确定的知识或信息中做出推理。
+贝叶斯网络的有向无环图(Directed Acyclic Graph,DAG)中的节点表示随机变量
,,由代表变量节点及连接这些节点有向边构成。它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。节点代表随机变量,节点间的有向边代表了节点间的互相关系(由父节点指向其子节点),用条件概率进行表达关系强度,没有父节点的用先验概率进行信息表达。节点变量可以是任何问题的抽象,如:测试值,观测现象,意见征询等。适用于表达和分析不确定性和概率性的事件,应用于有条件地依赖多种控制因素的决策,可以从不完全、不精确或不确定的知识或信息中做出推理。
使用贝叶斯网络必须知道各个状态之间相关的概率。得到这些参数的过程叫做训练。和训练马尔可夫模型一样,训练贝叶斯网络要用一些已知的数据。比如在训练上面的网络,需要知道一些心血管疾病和吸烟、家族病史等有关的情况。相比马尔可夫链,贝叶斯网络的训练比较复杂,从理论上讲,它是一个 NP-complete问题,也就是说,现阶段没有可以在多项式时间内完成的算法。但是,对于某些应用,这个训练过程可以简化,并在计算上高效实现。
From 989f3207da8b8520f9c7bcc25bc395556366e9e8 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 23 Nov 2018 12:32:54 +0800
Subject: [PATCH 006/134] Update ABT.md
---
assets/src/ABT/ABT.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/src/ABT/ABT.md b/assets/src/ABT/ABT.md
index d7d47252..b8c46f79 100644
--- a/assets/src/ABT/ABT.md
+++ b/assets/src/ABT/ABT.md
@@ -12,6 +12,7 @@
如今的机器学习领域主要的研究工作在三个方面进行:1)面向任务的研究,研究和分析改进一组预定任务的执行性能的学习系统;2)认知模型,研究人类学习过程并进行计算模拟;3)理论的分析,从理论的层面探索可能的算法和独立的应用领域算法。
#### AdaBoost
+
自适应提升(AdaBoost:Adaptive Boosting)算法是基于概率近似正确的学习模型下提出的一种提升算法。在分类问题中,AdaBoost通过修改训练样本的权值分布,学习多个弱分类器,并将这些分类器进行线性组合,构成一个强分类器,提高分类性能。其中强分类器可理解为分类精确度高的算法,弱分类器可理解为分类精度低的算法,一般AdaBoost算法是弱分类器的线性组合为:
From 66f6f7f7b5d937daf2d6ae72cf3114b181aaa079 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 23 Nov 2018 12:33:20 +0800
Subject: [PATCH 007/134] Update RAM.0.3.md
---
assets/src/RAM/RAM.0.3.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/assets/src/RAM/RAM.0.3.md b/assets/src/RAM/RAM.0.3.md
index 84c24d55..1acae726 100644
--- a/assets/src/RAM/RAM.0.3.md
+++ b/assets/src/RAM/RAM.0.3.md
@@ -3,7 +3,6 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
回归方法是对数值型连续随机变量进行预测和建模的监督学习算法。其特点是标注的数据集具有数值型的目标变量。回归的目的是预测数值型的目标值。
-
常用的回归方法包括:
* 线性回归:使用超平面拟合数据集
* 最近邻算法:通过搜寻最相似的训练样本来预测新样本的值
From 157c1462c5a24ef6c5329df92054d63f9b1eae05 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 23 Nov 2018 12:34:08 +0800
Subject: [PATCH 008/134] Update RAM.0.3.md
---
assets/src/RAM/RAM.0.3.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/RAM/RAM.0.3.md b/assets/src/RAM/RAM.0.3.md
index 1acae726..649fc75c 100644
--- a/assets/src/RAM/RAM.0.3.md
+++ b/assets/src/RAM/RAM.0.3.md
@@ -27,7 +27,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
如果将$y$看作是样本$x$作为正例的可能性,那么可以得到反应$x$作为正例的相对可能性对数几率(logit)
-
+
#### 逻辑回归算法
From f7f76ba6ab29beb58476ab27e61afaed3c560e9a Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Sun, 2 Dec 2018 20:59:51 +0800
Subject: [PATCH 009/134] Update README.md
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index bcbbe450..f1ca466b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
### Deeplearning Algorithms tutorial
+
From 7049b98a9c31be103a3d7febb1354ddc1432012c Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Sun, 2 Dec 2018 21:00:23 +0800
Subject: [PATCH 010/134] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f1ca466b..ed8b7162 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,7 @@
* [关联规则](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/ARS/ARS.md)
* [支持向量机(SVM)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/SVM/SVM.md)
-后面的算法和我们的算法模型,我会持续更新整理,后续的算法章节会不断的补上,希望可以对新入门学习AI开发和算法的开发者有所帮助!
+后面的算法和算法模型,我会持续更新整理,后续的算法章节会不断的补上,希望可以对新入门学习AI开发和算法的开发者有所帮助!
#### 算法模型
* [回归算法](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/RAM/RAM.0.1.md)
From 9cf19c507696eeac3d4900380aaec1fe12ab21ad Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 3 Dec 2018 09:57:31 +0800
Subject: [PATCH 011/134] Update README.md
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index ed8b7162..bfc84b45 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
### Deeplearning Algorithms tutorial
-
From 47bbf26dd59c8bc471876aab18db2b8030d662d6 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 3 Dec 2018 09:57:59 +0800
Subject: [PATCH 012/134] Update README.md
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index bfc84b45..48d39508 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,6 @@
* 用学习来的算法运用在测试集上累评估算法(可能要设计到调整参数(parameter tuning) 用来验证集(validation set))
#### 机器学习
-
* 机器学习:机器学习是计算机科学的一个子领域,在人工智能领域,机器学习逐渐发展成模式识别和计算科学理论的研究。通俗的讲机器学习是一种能够赋予机器学习的能力,可以让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。
* 机器学习的应用:机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。下面开启我们的机器学习!
From c04c5f7df85b7a907c7a6304c5b30f7c3e2bb167 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 4 Dec 2018 08:52:21 +0800
Subject: [PATCH 013/134] Update BNS.md
---
assets/src/BNS/BNS.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/assets/src/BNS/BNS.md b/assets/src/BNS/BNS.md
index cd31cea0..02ccc489 100644
--- a/assets/src/BNS/BNS.md
+++ b/assets/src/BNS/BNS.md
@@ -3,7 +3,6 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 贝叶斯网络
-
贝叶斯网络(Bayesian networks or Bayesnets)也称为因果概率网络(CPNs,Causal Probabilistic Networks)、贝叶斯信念网络(BNS,Bayesian belief Networks)或信念网络,是用来对那些带有不确定性问题的问题域进行建模的系统。
从形式上说,贝叶斯网络是由一组以单向箭头相连的节点以及与每个节点相对应的概率函数所构成的网络。对于离散变量的贝叶斯网络,概率函数便具有了概率表的形式。这个网络必须是一个有向无环图,即其中不存在一条起始和终止于同一节点的通路。用图形的方法描述数据间的相互(因果)关系,语义清晰、可理解性强,有助于利用数据间的因果关系进行诊断、预测、分类等分析。因而贝叶斯方法具有独特的不确定性知识表达形式、丰富的概率表达能力、综合先验知识的增量学习特性等优点。
From f7684bb4db24543c8f0bcc3325a1431ad7ee6d82 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 4 Dec 2018 08:52:38 +0800
Subject: [PATCH 014/134] Update BNS.md
---
assets/src/BNS/BNS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/BNS/BNS.md b/assets/src/BNS/BNS.md
index 02ccc489..2cdca7a0 100644
--- a/assets/src/BNS/BNS.md
+++ b/assets/src/BNS/BNS.md
@@ -15,7 +15,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
贝叶斯网络的分析流程通常由三个步骤组成,即(1)网络建立,(2)参数学习或参数设置,(3)网络推理,如图所示.
-
+
贝叶斯网络分析流程
From b3207b20f80a85d7133e30e99399f07e557652e4 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 4 Dec 2018 08:53:28 +0800
Subject: [PATCH 015/134] Update BNS.md
---
assets/src/BNS/BNS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/BNS/BNS.md b/assets/src/BNS/BNS.md
index 2cdca7a0..f15eb942 100644
--- a/assets/src/BNS/BNS.md
+++ b/assets/src/BNS/BNS.md
@@ -59,7 +59,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
如果要计算节点D的概率,由于节点D和节点A、B相关,根据边界概率的定义有:
-
+
在没有任何证据提供给网络的情况下有初始边界概率为
From 4dbf4e688510166ecd92730eab00c7fe50391207 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Wed, 5 Dec 2018 09:57:02 +0800
Subject: [PATCH 016/134] Update ANN.0.7.md
---
assets/src/ANN/ANN.0.7.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/src/ANN/ANN.0.7.md b/assets/src/ANN/ANN.0.7.md
index e5d388b8..b0e3fc2b 100644
--- a/assets/src/ANN/ANN.0.7.md
+++ b/assets/src/ANN/ANN.0.7.md
@@ -12,6 +12,7 @@
如今的机器学习领域主要的研究工作在三个方面进行:1)面向任务的研究,研究和分析改进一组预定任务的执行性能的学习系统;2)认知模型,研究人类学习过程并进行计算模拟;3)理论的分析,从理论的层面探索可能的算法和独立的应用领域算法。
#### 卷积神经网络(Convolutional Neural Network)
+
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。
卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。 K.Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。
From 1a256b3bb6bc0866195e0d50bd720d237c9e5813 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Wed, 5 Dec 2018 09:57:14 +0800
Subject: [PATCH 017/134] Update ANN.0.7.md
---
assets/src/ANN/ANN.0.7.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/assets/src/ANN/ANN.0.7.md b/assets/src/ANN/ANN.0.7.md
index b0e3fc2b..bcc81d07 100644
--- a/assets/src/ANN/ANN.0.7.md
+++ b/assets/src/ANN/ANN.0.7.md
@@ -24,8 +24,6 @@ CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图
-
-
#### 应用示例
```python
import numpy as np
From 7be9f48a043dc7598991845a6db821322f3cced3 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Sun, 9 Dec 2018 18:04:35 +0800
Subject: [PATCH 018/134] Update BNS.md
---
assets/src/BNS/BNS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/BNS/BNS.md b/assets/src/BNS/BNS.md
index f15eb942..d34da37f 100644
--- a/assets/src/BNS/BNS.md
+++ b/assets/src/BNS/BNS.md
@@ -11,7 +11,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
贝叶斯网络根据每个节点的概率表,在给定部分(一个或多个)节点状态值的前提下,对其余全部或部分节点的概率分布进行预测的过程即为网络的推理过程。
-分析流程
+分析流程:
贝叶斯网络的分析流程通常由三个步骤组成,即(1)网络建立,(2)参数学习或参数设置,(3)网络推理,如图所示.
From 3aa579462791186fcd7cd9bd1537eec30eb1f2d2 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Sun, 9 Dec 2018 18:04:52 +0800
Subject: [PATCH 019/134] Update BNS.md
---
assets/src/BNS/BNS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/BNS/BNS.md b/assets/src/BNS/BNS.md
index d34da37f..80093f59 100644
--- a/assets/src/BNS/BNS.md
+++ b/assets/src/BNS/BNS.md
@@ -62,7 +62,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
-在没有任何证据提供给网络的情况下有初始边界概率为
+在没有任何证据提供给网络的情况下有初始边界概率为:
P(D)=0.8×0.1×0.4+0.6×0.1×0.6+0.6×0.9×0.4+0.3×0.9+0.6=0.032+0.036+0.0216+0.0162=0. 446.
From dafac4211a343457e0a25ef9f532d9d6b0f3765f Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 11 Dec 2018 10:00:13 +0800
Subject: [PATCH 020/134] Update DRA.0.8.md
---
assets/src/DRA/DRA.0.8.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/DRA/DRA.0.8.md b/assets/src/DRA/DRA.0.8.md
index 3e7af32b..b1529b1d 100644
--- a/assets/src/DRA/DRA.0.8.md
+++ b/assets/src/DRA/DRA.0.8.md
@@ -3,4 +3,4 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
#### t-分布随机近邻嵌入(t-SNE)
-t-分布随机近邻嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE)
+t-分布随机近邻嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE).
From 8776cec69772c2919469178961feb819c7284640 Mon Sep 17 00:00:00 2001
From: lisensen
Date: Wed, 16 Jan 2019 10:02:09 +0800
Subject: [PATCH 021/134] change page of Readme
---
README.md | 5 +++--
assets/src/EL/EL.0.1.md | 4 ++++
assets/src/EL/EL.0.2.md | 4 ++++
assets/src/EL/EL.0.3.md | 4 ++++
assets/src/EL/EL.0.4.md | 4 ++++
5 files changed, 19 insertions(+), 2 deletions(-)
create mode 100644 assets/src/EL/EL.0.1.md
create mode 100644 assets/src/EL/EL.0.2.md
create mode 100644 assets/src/EL/EL.0.3.md
create mode 100644 assets/src/EL/EL.0.4.md
diff --git a/README.md b/README.md
index 48d39508..dbf39039 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,7 @@
* 用学习来的算法运用在测试集上累评估算法(可能要设计到调整参数(parameter tuning) 用来验证集(validation set))
#### 机器学习
+
* 机器学习:机器学习是计算机科学的一个子领域,在人工智能领域,机器学习逐渐发展成模式识别和计算科学理论的研究。通俗的讲机器学习是一种能够赋予机器学习的能力,可以让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。
* 机器学习的应用:机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。下面开启我们的机器学习!
@@ -80,7 +81,7 @@
* [关联规则](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/ARS/ARS.md)
* [支持向量机(SVM)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/SVM/SVM.md)
-后面的算法和算法模型,我会持续更新整理,后续的算法章节会不断的补上,希望可以对新入门学习AI开发和算法的开发者有所帮助!
+后面的算法和我们的算法模型,我会持续更新整理,后续的算法章节会不断的补上,希望可以对新入门学习AI开发和算法的开发者有所帮助!
#### 算法模型
* [回归算法](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/RAM/RAM.0.1.md)
@@ -152,7 +153,7 @@
* [拉普拉斯特征映射(Laplacian Eigenmaps)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.7.md)
* [t-分布随机近邻嵌入(t-SNE)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.8.md)
* [深度自动编码器(Deep Autoencoder Networks)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.9.md)
- * [集成算法]()
+ * [集成算法(Ensemble Learning)]()
* [Boosting]()
* [Bagging]()
* [AdaBoost]()
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
new file mode 100644
index 00000000..758daf19
--- /dev/null
+++ b/assets/src/EL/EL.0.1.md
@@ -0,0 +1,4 @@
+### Deeplearning Algorithms tutorial
+谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
+AI的开发离不开算法那我们就接下来开始学习算法吧!
+
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
new file mode 100644
index 00000000..758daf19
--- /dev/null
+++ b/assets/src/EL/EL.0.2.md
@@ -0,0 +1,4 @@
+### Deeplearning Algorithms tutorial
+谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
+AI的开发离不开算法那我们就接下来开始学习算法吧!
+
diff --git a/assets/src/EL/EL.0.3.md b/assets/src/EL/EL.0.3.md
new file mode 100644
index 00000000..758daf19
--- /dev/null
+++ b/assets/src/EL/EL.0.3.md
@@ -0,0 +1,4 @@
+### Deeplearning Algorithms tutorial
+谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
+AI的开发离不开算法那我们就接下来开始学习算法吧!
+
diff --git a/assets/src/EL/EL.0.4.md b/assets/src/EL/EL.0.4.md
new file mode 100644
index 00000000..758daf19
--- /dev/null
+++ b/assets/src/EL/EL.0.4.md
@@ -0,0 +1,4 @@
+### Deeplearning Algorithms tutorial
+谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
+AI的开发离不开算法那我们就接下来开始学习算法吧!
+
From e887b42167c3c8c63cc9416978b66a85f0494d95 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Wed, 16 Jan 2019 10:04:32 +0800
Subject: [PATCH 022/134] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index dbf39039..c3307002 100644
--- a/README.md
+++ b/README.md
@@ -153,9 +153,9 @@
* [拉普拉斯特征映射(Laplacian Eigenmaps)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.7.md)
* [t-分布随机近邻嵌入(t-SNE)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.8.md)
* [深度自动编码器(Deep Autoencoder Networks)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/DRA/DRA.0.9.md)
- * [集成算法(Ensemble Learning)]()
- * [Boosting]()
- * [Bagging]()
+ * [集成算法(Ensemble Learning)](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/EL/EL.0.1.md)
+ * [Boosting](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/EL/EL.0.2.md)
+ * [Bagging](https://github.com/KeKe-Li/tutorial/blob/master/assets/src/EL/EL.0.3.md)
* [AdaBoost]()
* [堆叠泛化(混合)]()
* [GBM 算法]()
From ab3ba4458f4a49ca381e8c7d8c1de2460fa0efc7 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Wed, 16 Jan 2019 10:05:31 +0800
Subject: [PATCH 023/134] Update EL.0.1.md
---
assets/src/EL/EL.0.1.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
index 758daf19..8a8dbbba 100644
--- a/assets/src/EL/EL.0.1.md
+++ b/assets/src/EL/EL.0.1.md
@@ -2,3 +2,5 @@
谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
AI的开发离不开算法那我们就接下来开始学习算法吧!
+#### 集成算法(Ensemble Learning)
+
From fd154dd80a68d5140532f4140cafd012de4ec5bc Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 21 Jan 2019 18:40:31 +0800
Subject: [PATCH 024/134] Update EL.0.1.md
---
assets/src/EL/EL.0.1.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
index 8a8dbbba..f6b383ce 100644
--- a/assets/src/EL/EL.0.1.md
+++ b/assets/src/EL/EL.0.1.md
@@ -4,3 +4,5 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 集成算法(Ensemble Learning)
+集成学习(Ensemble Learning)是使用一序列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习中多个学习器被称为“弱学习器”,若这些弱学习器都是一个种类的,则被称为是同质的;若这些弱学习器不全是一个种类的,则被称为异质的。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”
+
From f6905b84652089564ae7918512634abf7be4dfd9 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 21 Jan 2019 18:45:22 +0800
Subject: [PATCH 025/134] Update EL.0.1.md
---
assets/src/EL/EL.0.1.md | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
index f6b383ce..522b1816 100644
--- a/assets/src/EL/EL.0.1.md
+++ b/assets/src/EL/EL.0.1.md
@@ -4,5 +4,10 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 集成算法(Ensemble Learning)
-集成学习(Ensemble Learning)是使用一序列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习中多个学习器被称为“弱学习器”,若这些弱学习器都是一个种类的,则被称为是同质的;若这些弱学习器不全是一个种类的,则被称为异质的。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”
+集成学习(Ensemble Learning)是使用一序列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习中多个学习器被称为“弱学习器”,如果这些弱学习器都是一个种类的,则被称为是同质的;若这些弱学习器不全是一个种类的,则被称为异质的。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”
+
+集成学习在各个规模的数据集上都有很好的策略。
+* 数据集大:划分成多个小数据集,学习多个模型进行组合
+* 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
+
From fa084776a51ea62d63652971ad1a26608485a135 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 21 Jan 2019 18:46:14 +0800
Subject: [PATCH 026/134] Update EL.0.1.md
---
assets/src/EL/EL.0.1.md | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
index 522b1816..6a6a1b28 100644
--- a/assets/src/EL/EL.0.1.md
+++ b/assets/src/EL/EL.0.1.md
@@ -10,4 +10,13 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
* 数据集大:划分成多个小数据集,学习多个模型进行组合
* 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
+集成算法(Ensemble Learning)主要包括:
+
+* Boosting
+* Bagging
+* AdaBoost
+* 堆叠泛化(混合)
+* GBM 算法
+* GBRT 算法
+* 随机森林
From 629211508936bdd8687e8f35cb37aa54ebb101bd Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 21 Jan 2019 18:47:32 +0800
Subject: [PATCH 027/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 758daf19..594201d6 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -2,3 +2,6 @@
谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
AI的开发离不开算法那我们就接下来开始学习算法吧!
+#### Bagging
+
+Bagging是bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
From 1113a36f9adb46d5a20b1771d68bad85e24a36b2 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 12 Feb 2019 10:20:27 +0800
Subject: [PATCH 028/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 594201d6..4ac16608 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -4,4 +4,4 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### Bagging
-Bagging是bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
+Bagging是Bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
From 00199d6f26d80f21b44aadd196a23d7112b65cfd Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 12 Feb 2019 10:25:41 +0800
Subject: [PATCH 029/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 4ac16608..4e7ee2b3 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -5,3 +5,5 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### Bagging
Bagging是Bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
+
+Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。
From b22c9435b3ae609805a3308961aded932a4f83f1 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 12 Feb 2019 10:26:17 +0800
Subject: [PATCH 030/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 4e7ee2b3..3558ee88 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -7,3 +7,11 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
Bagging是Bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。
+
+Bagging即套袋法,其算法过程如下:
+
+从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
+
+* 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
+
+* 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
From 02cc49caf7e6587050314ab8894b3a8cdd8f6b2c Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 12 Feb 2019 10:29:48 +0800
Subject: [PATCH 031/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 3558ee88..7a812dce 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -2,7 +2,7 @@
谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
AI的开发离不开算法那我们就接下来开始学习算法吧!
-#### Bagging
+#### Boosting
Bagging是Bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。
From 6c9f61c049cc1d1fd807accc19ed49b99680c6f4 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Thu, 14 Feb 2019 18:21:15 +0800
Subject: [PATCH 032/134] Update CAS.md
---
assets/src/CAS/CAS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/src/CAS/CAS.md b/assets/src/CAS/CAS.md
index a8e97b2e..c936d460 100644
--- a/assets/src/CAS/CAS.md
+++ b/assets/src/CAS/CAS.md
@@ -18,7 +18,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 聚类分析
-聚类分析(英语:Cluster analysis,亦称为群集分析)是对于统计数据分析的一门技术,在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都有相似的一些属性,常见的包括在坐标系中更短的空间距离等。
+聚类分析(Cluster analysis,亦称为群集分析)是对于统计数据分析的一门技术,在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都有相似的一些属性,常见的包括在坐标系中更短的空间距离等。
一般把数据聚类归纳为一种非监督学习。
From 409b4ff601ae48ea3f3a9975c164d028f6483db2 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 1 Mar 2019 10:27:13 +0800
Subject: [PATCH 033/134] Update EL.0.1.md
---
assets/src/EL/EL.0.1.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/src/EL/EL.0.1.md b/assets/src/EL/EL.0.1.md
index 6a6a1b28..3cbe8ee5 100644
--- a/assets/src/EL/EL.0.1.md
+++ b/assets/src/EL/EL.0.1.md
@@ -7,6 +7,7 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
集成学习(Ensemble Learning)是使用一序列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习中多个学习器被称为“弱学习器”,如果这些弱学习器都是一个种类的,则被称为是同质的;若这些弱学习器不全是一个种类的,则被称为异质的。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”
集成学习在各个规模的数据集上都有很好的策略。
+
* 数据集大:划分成多个小数据集,学习多个模型进行组合
* 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
From f094d56154bbe021b132874f6f27bda36bf3c5b6 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Mon, 11 Mar 2019 10:04:29 +0800
Subject: [PATCH 034/134] Update DRA.0.2.md
---
assets/src/DRA/DRA.0.2.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/assets/src/DRA/DRA.0.2.md b/assets/src/DRA/DRA.0.2.md
index 38dc3675..50574b30 100644
--- a/assets/src/DRA/DRA.0.2.md
+++ b/assets/src/DRA/DRA.0.2.md
@@ -1,4 +1,5 @@
### Deeplearning Algorithms tutorial
+
谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac。另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。全球前十大科技公司全部发力人工智能理论研究和应用的实现,虽然入门艰难,但是一旦入门,高手也就在你的不远处!
AI的开发离不开算法那我们就接下来开始学习算法吧!
From d24e9ddc877af18386bfaa0e5569560085b36542 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Tue, 26 Mar 2019 20:01:25 +0800
Subject: [PATCH 035/134] Update DRA.0.6.md
---
assets/src/DRA/DRA.0.6.md | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/assets/src/DRA/DRA.0.6.md b/assets/src/DRA/DRA.0.6.md
index 9c0cea4e..97764db2 100644
--- a/assets/src/DRA/DRA.0.6.md
+++ b/assets/src/DRA/DRA.0.6.md
@@ -8,3 +8,14 @@ AI的开发离不开算法那我们就接下来开始学习算法吧!
从数据本身的的性质特征来看,数据降维可以大致分为线性降维和非线性降维两种技术方法。其中,线性降维技术仅对于数据维数相对较低、且具有全局线性结构的数据有着很好的降维效果。然而,在实际的科学研究中,科研工作者却需要面对海量的非线性高维数据。因此,能够有效处理高维非线性数据的方法亟待被提出,本文将介绍一种用于处理高维非线性数据的降维方法。
局部线性嵌入(Locally linear embedding, LLE)是一种非线性的降维方法,该算法由 Sam T.Roweis等人于2000年提出并发表在《Science》杂志上。LLE试图保留原始高维数据的局部性质,通过假设局部原始数据近似位于一张超平面上,从而使得该局部的某一个数据可以由其邻域数据线性表示。
+
+Sam T.Roweis 和 Lawrence K.Saul提出局部线性嵌入(Locally linear embedding, LLE)算法,它是针对非线性数据的一种新的降维技术,并且能够使降维后的数据保持原有的拓扑结构。 LLE算法可以广泛的应用于非线性数据的降维、聚类以及图像分割等领域。
+
+局部线性嵌入(Locally linear embedding, LLE)是最新提出的非线性降维方法。该算法即具有处理非线性数据的优点又有线性降维方法计算性能的优越性。 简单的讲,该方法是将高维流型用剪刀剪成很多的小块,每一小块可以用平面代替,然后再低维中重新拼合出来, 且要求保留各点之间的拓扑关系不变。整个问题最后被转化为两个二次规划问题。
+
+局部线性嵌入(Locally linear embedding, LLE)算法可以归结为三步:
+1. 寻找每个样本点的k个近邻点;
+2. 由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
+3. 由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。
+
+局部线性嵌入算法的第一步是计算出每个样本点的k个近邻点。把相对于所求样本点距离最近的k个样本点规定为所求样本点的k个近邻点。k是一个预先给定值。Sam T.Roweis 和 Lawrence K.Saul算法采用的是欧氏距离,则减轻复杂的计算。然而本文是假定高维空间中的数据是非线性分布的,采用了diijstra距离。Dijkstra 距离是一种测地距离,它能够保持样本点之间的曲面特性,在ISOMAP算法中有广泛的应用。针对样本点多的情况,普通的dijkstra算法不能满足LLE算法的要求。
From b6073935ed5216ce3f4258226dd3e04b7e906fb6 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Thu, 4 Apr 2019 15:46:34 +0800
Subject: [PATCH 036/134] Update DRA.0.6.md
---
assets/src/DRA/DRA.0.6.md | 335 ++++++++++++++++++++++++++++++++++++++
1 file changed, 335 insertions(+)
diff --git a/assets/src/DRA/DRA.0.6.md b/assets/src/DRA/DRA.0.6.md
index 97764db2..41683bc3 100644
--- a/assets/src/DRA/DRA.0.6.md
+++ b/assets/src/DRA/DRA.0.6.md
@@ -19,3 +19,338 @@ Sam T.Roweis 和 Lawrence K.Saul提出局部线性嵌入(Locally linear embedd
3. 由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。
局部线性嵌入算法的第一步是计算出每个样本点的k个近邻点。把相对于所求样本点距离最近的k个样本点规定为所求样本点的k个近邻点。k是一个预先给定值。Sam T.Roweis 和 Lawrence K.Saul算法采用的是欧氏距离,则减轻复杂的计算。然而本文是假定高维空间中的数据是非线性分布的,采用了diijstra距离。Dijkstra 距离是一种测地距离,它能够保持样本点之间的曲面特性,在ISOMAP算法中有广泛的应用。针对样本点多的情况,普通的dijkstra算法不能满足LLE算法的要求。
+
+
+应用示例:
+```python
+
+import numpy
+import sources
+
+from sklearn import manifold
+from sklearn.utils.extmath import randomized_svd
+from sklearn.neighbors import NearestNeighbors
+
+
+from wordreps import WordReps
+from scipy.sparse import csr_matrix, eye
+from scipy.sparse.linalg import eigsh
+from scipy.sparse.linalg.eigen.arpack.arpack import ArpackNoConvergence
+
+from scipy.io import savemat, loadmat
+
+import sys
+import time
+import argparse
+import collections
+
+
+class MetaEmbed():
+
+ def __init__(self, wordreps, words):
+ self.words = words
+ self.ids = {}
+ for (i,word) in enumerate(words):
+ self.ids[word] = i
+
+ self.reps = wordreps
+ self.dims = [x.dim for x in self.reps]
+ self.embeds = []
+ N = len(words)
+
+ # Create the source embedding matrices
+ write("Creating source embedding matrices...")
+ for i in range(len(self.reps)):
+ M = numpy.zeros((self.reps[i].dim, N), dtype=numpy.float64)
+ for j in range(N):
+ M[:,j] = self.reps[i].vects[self.words[j]]
+ self.embeds.append(M)
+ write("done\n")
+ pass
+
+ def compute_neighbours(self, nns):
+ """
+ Compute the nearest neighbours for each embedding.
+ """
+ self.NNS = []
+ for i in range(len(self.embeds)):
+ start_time = time.clock()
+ write("Computing nearest neighbours for embedding no = %d ..." % i)
+ nbrs = NearestNeighbors(n_neighbors=nns, algorithm='ball_tree').fit(self.embeds[i].T)
+ distances, indices = nbrs.kneighbors(self.embeds[i].T)
+ self.NNS.append(indices[:,1:])
+ end_time = time.clock()
+ write("Done (%s sec.)\n" % str(end_time - start_time))
+ pass
+
+ def show_nns(self, word ,nns):
+ """
+ Print nearest neigbours for a word in different embeddings.
+ """
+ for i in range(len(self.embeds)):
+ print "Showing nearest neighbours for = %s" % word
+ print "\nEmbedding no = %d" % i
+ for s in self.NNS[i][self.ids[word], :][:nns]:
+ print self.words[s]
+ pass
+
+ def compute_weights(self):
+ """
+ Computes the reconstruction weights.
+ """
+ start_time = time.clock()
+ T = 10 # no. of iterations.
+ alpha = 0.01 # learning rate.
+ N = len(self.words)
+ self.W = numpy.zeros((N, N), dtype=numpy.float64)
+
+ # initialise the weights.
+ for i in range(N):
+ nns = set()
+ for j in range(len(self.embeds)):
+ for x in self.NNS[j][i,:]:
+ nns.add(x)
+ val = 1.0 / float(len(nns))
+ for j in nns:
+ self.W[i,j] = val
+
+ # iterate
+ for i in range(N):
+ write("\x1b[2K\rLearning weights for (%d of %d) = %s" % (i, N, self.words[i]))
+ for t in range(T):
+ d = [self.embeds[j][:,i] - numpy.sum([self.W[i,k] * self.embeds[j][:,k] for k in self.NNS[j][i,:]], axis=0) for j in range(len(self.embeds))]
+ #for j in range(len(self.embeds)):
+ # d.append(self.embeds[j][:,i] - numpy.sum([self.W[i,k] * self.embeds[j][:,k] for k in self.NNS[j][i,:]], axis=0))
+
+ grad = numpy.zeros(N, dtype=numpy.float64)
+ for j in range(len(self.embeds)):
+ for k in self.NNS[j][i,:]:
+ grad[k] += -2.0 * numpy.dot(d[j], self.embeds[j][:,k])
+
+ self.W[i,:] -= (alpha * grad)
+
+ total = numpy.sum(self.W[i,:])
+ if total != 0:
+ self.W[i,:] = self.W[i,:] / total
+ write("\n")
+ end_time = time.clock()
+ write("Done (took %s seconds)\n" % str(end_time - start_time))
+ pass
+
+ def save_weights(self, fname):
+ """
+ Save the weight matrix to a disk file.
+ """
+ savemat(fname, {"W":self.W})
+ pass
+
+ def load_weights(self, fname):
+ """
+ Load the weight matrix from a disk file.
+ """
+ self.W = loadmat(fname)["W"]
+ pass
+
+ def test_compute_weights(self):
+ """
+ Check whether the weights are computed correctly
+ """
+ N = len(self.words)
+ # Check whether non-neighbours have weights equal to zero.
+ write("Checking whether non-neighbours have zero weights...\n")
+ for i in range(N):
+ pred_nns = set(numpy.where(self.W[i,:] != 0)[0])
+ nns = set()
+ for j in range(len(self.embeds)):
+ nns = nns.union(set(self.NNS[j][i,:]))
+ assert(pred_nns == nns)
+
+ # Check whether reconstruction weights add upto one.
+ write("Checking whether weights add to 1...\n")
+ for i in range(N):
+ assert(numpy.allclose(numpy.sum(self.W[i,:]), 1))
+
+ # print nearest neighbours and their weights
+ nn_file = open("../work/nn.csv", 'w')
+ for i in range(N):
+ nn_file.write("%s, " % self.words[i])
+ L = []
+ for j in range(N):
+ if self.W[i,j] != 0:
+ L.append((self.words[j], self.W[i,j]))
+ L.sort(lambda x, y: -1 if x[1] > y[1] else 1)
+ for (w, val) in L:
+ nn_file.write("%s, %f, " % (w, val))
+ nn_file.write("\n")
+ nn_file.close()
+ pass
+
+ def compute_M(self):
+ """
+ Compute the smallest eigenvectors of M = (I - W')\T(I - W').
+ """
+ # Building W'
+ N = len(self.words)
+ start_time = time.clock()
+ write("Computing W'...")
+ for i in range(N):
+ z = numpy.zeros(N)
+ write("Completed %d of %d\r" % (i, N))
+ for nns in self.NNS:
+ z[nns[i,:]] += 1
+ self.W[i,:] = z * self.W[i,:]
+ end_time = time.clock()
+ write("Done (took %s seconds)\n" % str(end_time - start_time))
+
+ # Computing M.
+ start_time = time.clock()
+ write("Computing M....")
+ self.W = csr_matrix(self.W)
+ M = eye(N, format=self.W.format) - self.W
+ M = (M.T * M).tocsr()
+ end_time = time.clock()
+ write("Done (took %s seconds)\n" % str(end_time - start_time))
+ return M
+
+ def compute_embeddings(self, k, M, embed_fname):
+ """
+ Perform eigen decomposition.
+ """
+ N = len(self.words)
+ start_time = time.clock()
+ write("Computing Eigen decomposition...")
+ s, V = eigsh(M, k+1, tol=1E-6, which="SA", maxiter=100)
+ end_time = time.clock()
+ write("Done (took %s seconds)\n" % str(end_time - start_time))
+ P = V[:, 1:]
+ err = numpy.sum(s[1:])
+ write("Projection error = %f\n" % err)
+
+ write("Writing embeddings to file...")
+ # Write embeddings to file.
+ with open(embed_fname, 'w') as embed_file:
+ for i in range(N):
+ embed_file.write("%s %s\n" % (self.words[i], " ".join([str(x) for x in P[i,:]])))
+ write("Done\n")
+ pass
+
+
+def write(msg):
+ sys.stdout.write(msg)
+ sys.stdout.flush()
+ pass
+
+
+def meta_embed(embeddings, words, nns, comps, embed_path):
+ """
+ Perform meta-embedding using LLE.
+ """
+ ME = MetaEmbed(embeddings, words)
+ ME.compute_neighbours(nns)
+ #ME.show_nns("king", 5)
+
+ #ME.compute_weights_parallel()
+ ME.compute_weights()
+
+ #ME.save_weights("../work/weights_%d" % nns)
+ #ME.load_weights("../work/weights+n=%d.meta" % nns)
+ #ME.test_compute_weights()
+ M = ME.compute_M()
+ for k in comps:
+ embed_fname = "%s/n=%d+k=%d" % (embed_path, nns, k)
+ write("Embedding NNS = %d, Components (k) = %d\n" % (nns, k))
+ try:
+ ME.compute_embeddings(k, M, embed_fname)
+ except ArpackNoConvergence as e:
+ print e
+ return ME
+
+
+def baseline_concatenate(embeddings, words, embed_fname):
+ """
+ Concatenate embeddings to create co-embeddings.
+ """
+ dim = sum([x.dim for x in embeddings])
+
+ print "Concatenation dimension =", dim
+ # concatenate the vectors.
+ with open(embed_fname, 'w') as embed_file:
+ for (i,word) in enumerate(words):
+ L = []
+ for x in embeddings:
+ w = 8 if x.dim == 300 else 1
+ #w = 1
+ L.append(w * x.vects[word])
+
+ z = numpy.concatenate(L)
+ embed_file.write("%s %s\n" % (word, " ".join([str(x) for x in z])))
+ pass
+
+def get_common_words(embeddings):
+ words = set(embeddings[0].vocab)
+ for i in range(1, len(embeddings)):
+ words = words.intersection(set(embeddings[i].vocab))
+ return words
+
+
+def get_selected_words(fname):
+ words = []
+ with open(fname) as F:
+ for line in F:
+ words.append(line.strip())
+ return words
+
+def perform_embedding(nns, comps):
+ print "Neigbourhood size = %d" % nns
+
+ #embed_sett
+ embed_settings = sources.embed_settings
+ embeddings = []
+ for (embd_fname, dim) in embed_settings:
+ start_time = time.clock()
+ sys.stdout.write("Loading %s -- (%d dim) ..." % (embd_fname, dim))
+ sys.stdout.flush()
+ WR = WordReps()
+ WR.read_model(embd_fname, dim)
+ end_time = time.clock()
+ sys.stdout.write("\nDone. took %s seconds\n" % str(end_time - start_time))
+ sys.stdout.flush()
+ embeddings.append(WR)
+
+ common_words = get_common_words(embeddings)
+ selected_words = get_selected_words("../work/selected-words")
+ words = []
+ for word in selected_words:
+ if word in common_words and word not in words:
+ words.append(word)
+ print "No. of common words =", len(common_words)
+ print "Vocabulary size =", len(words)
+ ME = meta_embed(embeddings, words, nns, comps, "../work/meta-embeds")
+ pass
+
+def save_embedding(words, WR, fname):
+ F = open(fname, 'w')
+ for w in words:
+ if w in WR.vects:
+ F.write("%s " % w)
+ F.write("%s\n" % " ".join([str(x) for x in WR.vects[w]]))
+ # elif w.lower() in WR.vects:
+ # F.write("%s " % w.lower())
+ # F.write("%s\n" % " ".join([str(x) for x in WR.vects[w.lower()]]))
+ F.close()
+ pass
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-nns", type=int, help="number of nearest neighbours")
+ parser.add_argument("-comps", type=str, help="components for the projection")
+ args = parser.parse_args()
+ comps = [int(x) for x in args.comps.split(',')]
+ perform_embedding(args.nns, comps)
+ pass
+
+if __name__ == '__main__':
+ main()
+ pass
+
+```
From 5be22aef8fb806d1add1f019e6e36246f97b69b5 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 11 Oct 2019 09:44:32 +0800
Subject: [PATCH 037/134] Update EL.0.2.md
---
assets/src/EL/EL.0.2.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/assets/src/EL/EL.0.2.md b/assets/src/EL/EL.0.2.md
index 7a812dce..36d0ff16 100644
--- a/assets/src/EL/EL.0.2.md
+++ b/assets/src/EL/EL.0.2.md
@@ -15,3 +15,6 @@ Bagging即套袋法,其算法过程如下:
* 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
* 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
+
+
+Boosting这其实思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权重提高一点再进行分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。
From 6178e97fbfc3208d88927a37b127dbf1cd5fb2a3 Mon Sep 17 00:00:00 2001
From: keke <2536485681li@gmail.com>
Date: Fri, 18 Oct 2019 11:07:45 +0800
Subject: [PATCH 038/134] Update DRA.0.7.md
---
assets/src/DRA/DRA.0.7.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/assets/src/DRA/DRA.0.7.md b/assets/src/DRA/DRA.0.7.md
index 0a29994c..797cd61c 100644
--- a/assets/src/DRA/DRA.0.7.md
+++ b/assets/src/DRA/DRA.0.7.md
@@ -3,3 +3,9 @@
AI的开发离不开算法那我们就接下来开始学习算法吧!
#### 拉普拉斯特征映射(Laplacian Eigenmaps)
+
+拉普拉斯特征映射(Laplacian Eigenmaps,LE),就是将核函数方法应用在局部保持投影的非监督降维方法,也是无监督降维的一种方法,LE方法的直观思想是希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。LE可以反映出数据内在的流形结构。
+
+拉普拉斯特征映射是一种基于图的降维算法,它希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近,从而在降维后仍能保持原有的数据结构。 借鉴了图论里面的Laplacian矩阵,把每个样本点看成图中的一个节点,通过样本距离或者邻接矩阵得到W(可以表征样本间的相似关系,用来重构数据流形的局部结构特征),再通过D = diag(sum(W,2)),得到对角的度矩阵(每个元素都是行和或者列和),然后通过L = D - W 得到Laplacian矩阵。
+
+Laplacian Eigenmaps算法的主要思想是,如果两个数据实例i和j很相似,那么i和j在降维后目标子空间中应该尽量接近。设数据实例的数目为n,目标子空间即最终的降维目标的维度为m。定义n×m大小的矩阵Y,其中每一个行向量yTi是数据实例i在目标m维子空间中的向量表示(即降维后的数据实例i)。
From 94c034864a629d7453965649d8528dcbeb170cfa Mon Sep 17 00:00:00 2001
From: lisensen
Date: Fri, 18 Oct 2019 11:30:38 +0800
Subject: [PATCH 039/134] change page of images
---
assets/images/440.jpg | Bin 0 -> 7251 bytes
assets/images/441.jpg | Bin 0 -> 7760 bytes
assets/images/442.jpg | Bin 0 -> 6971 bytes
assets/images/443.jpg | Bin 0 -> 3420 bytes
assets/images/444.jpg | Bin 0 -> 6248 bytes
assets/images/445.jpg | Bin 0 -> 4595 bytes
assets/images/446.jpg | Bin 0 -> 4595 bytes
assets/images/447.jpg | Bin 0 -> 6825 bytes
assets/images/448.jpg | Bin 0 -> 6231 bytes
9 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 assets/images/440.jpg
create mode 100644 assets/images/441.jpg
create mode 100644 assets/images/442.jpg
create mode 100644 assets/images/443.jpg
create mode 100644 assets/images/444.jpg
create mode 100644 assets/images/445.jpg
create mode 100644 assets/images/446.jpg
create mode 100644 assets/images/447.jpg
create mode 100644 assets/images/448.jpg
diff --git a/assets/images/440.jpg b/assets/images/440.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9114a74055aa3da4012caee3f29ac1bbcbe82a08
GIT binary patch
literal 7251
zcmXY0byQSe7lmPfLAqNQ7(%)PBnPBJq`N~JDUt3@>6DP}7z6|)1tkS(hL#)}9F+XV
z&)+|9y|wOs=bn4+KJT2nZ|ut#iujLc9-*P3;VUc2X`!K^m!jS!Kv<~f6M~5bG&CT!
z!}I4aot`T`cXM|0(0*-cZL4VOYU|-(t)(c7h9;VrsB3CZr%NW)>G_HoGNJ7(6zNqd
zjn9IgrYBSk`xLygBJ7%}EWE_DXM;SR$o@7VD%g2ftReq0fd3$mY_O*-gpvIh;j$Er
zH{%h@(hMWJ6zq5S%f0w=M2@&%j>D&>Roml$i-ME){>L4!PB8a6stq#Vk)c!M)^k$|
zY{Q~$
zB%_~J=#IWY_q%?_Abnu;7-_ZF#t$9j^=sd-o*(d(3QBaa`^mNWBL-7f+c74KD0%G5
zZw0&?{>C};B6UYZ_1<=gRi5`sQPb-a%lkr?KKsZEmw}4OoI&uyW?}(+bQsAq(4duiqawfIQ*wvp4OY2(Wz(Kna!WUed+%c0P
zyCd3t3pLegU-J9j47NQrIzJZ&_QrlP&OICUxN*^bf4;kY@HBVS-&gMTy31Dy8R${?
z>}Wq=?;;|T8~e5_D?OZiFgzx>SV0E4yLsOPS0TcncBI)>4(3VyKw!+fW$IGCH>rw8
zDKf*LN`bfz)hc?BYl-&=X)wg9(M(9xSmN$DK>X4CGC>(o7!WC36B_&(zXb=AJ)1AO
z`;oc<2C)r06l;xQ!M-Y-084A$^YB0I6EF^&
zXsIxYW}4fiT8baGXEl)~)}+!wTp|EzR%%9)#qdcp0cGSncL8)J-#7_%WEx#Fsm;mt
zf{L@enS{vPT~~sjR(YQM$}?DJk;Q``hnk7@d@UEj$0+8}CpVa;-M2&LO(y$XBAOpJ
zsS7^oPy8|egSZtya^5aiF`l^;>uN}SQVnmC1vU-_(nJ3UmNNUWZn16%U`&s(z@P=nI
z35J$Q7ZN(m>`FB`g1w3f%MHt23?(|0d5li{Jak{g*O+I(kq+|U7M^g@~QHjF0l062jY1?
zef2(BT`@&1EtF-jg)Z=N>Ub+z`c2OrGSB~{`wD(O%4;rv)M{>}jNfW){}dHoXgD~8
z<#OIUxC0#n3q~S(F(#OdSZ-?wHiEz9JMjZA-R$JK`RRXnGpa7K;&uOQ`(wCfX@tHq?9wf2DZxD4RQl*=oKh1Dms=GEzdf+ecNy#sROowB2sx?ca(%zQr1pw*hCSu*
z1fK6iDiJd6g=I{E?oDE#Bv;s!f-5TMu3;4)6@`H1jHkUAgufY-=Z4a!
z_mS@d&cCgP;R`P?E=>Br`kDg1r?@$6(WuGJfnQbE)O!d{O0@+b)tHb|n{e$=)mbq-ka_%*A46WjNyF!19*WEOS~bOd7-tB!PZ
zucqPixs0X|3-j}$9HJ2S!r=Qqt|+X}-%emB`F=B=7mM`unG_6jV_NELkhB|dmhU;C
z+{JRyRNub&=wz;QC)WwydGa~W;B#&oYf80D9Zo}E+jtjl%rjhtD5xMf3%_cz20Xzf
zqwONFtBgm&wlj_A?!?US?>`-$2`Gf<;t_}+@=Z22rP!o8XSRhl#eb36dHnl1z7~~b9<<0ZULkq~_YA}$
znEwcaDUpAC3KUQ*vfnB=ldDa4mYi;?$g#`Sn^c=yv`&_sJ1}@E{kNs+H62cm=yEt+
z?~_VP{t02daSRh-tlb2K;%P)Fz5Xgd4{wML^}4_Op+V2tb3S~Vy4vl3!&P0WAbI|k
z*>$E;lO;%}w9dvl#$4dwS|$0cF?C9o0)*byv6EXfJ&LP;Tu~V0!Iu9zjF#U@PI;Na
z