什么是深度迁移学习,为什么它变得如此流行?
A man sitting on a bridge in Austria
介绍
正如我们已经知道的,大型有效的深度学习模型是数据饥渴的。他们需要用数千甚至数百万个数据点进行训练,然后才能做出合理的预测。
培训在时间和资源上都非常昂贵。例如,由谷歌开发的流行语言表示模型 BERT 已经在 16 个云 TPU(总共 64 个 TPU 芯片)上训练了 4 天。客观地说,这是大约 60 台台式计算机连续运行 4 天。
然而,最大的问题是,像这样的模型只能在单一任务中执行。未来的任务需要一组新的数据点以及等量或更多的资源。
然而,人类的大脑并不是这样工作的。当解决一个新任务时,它不会丢弃先前获得的知识。相反,它根据从过去学到的东西做出决定。
迁移学习旨在模仿这种行为。
什么是迁移学习?
迁移学习是深度学习(和机器学习)中的一种方法,其中知识从一个模型转移到另一个模型。
Def: 模型 A 使用大型数据集 D.a 成功训练以解决源任务 T.a。但是,目标任务 T.b 的数据集 D.b 太小,妨碍了模型 B 的有效训练。因此,我们使用部分模型 A 来预测任务 T.b. 的结果
一个常见的误解是,训练和测试数据应该来自同一个来源或具有相同的分布。
使用迁移学习,我们能够在不同的任务中使用全部或部分已经预先训练好的模型来解决特定的任务。
著名的人工智能领袖吴恩达在下面的视频中很好地解释了这个概念。
什么时候使用迁移学习?
迁移学习正在成为使用深度学习模型的首选方式。原因解释如下。
缺乏数据
深度学习模型需要大量数据来有效地解决一项任务。然而,并不是经常有这么多数据可用。例如,一家公司可能希望为其内部通信系统构建一个非常特定的垃圾邮件过滤器,但并不拥有大量带标签的数据。
在这种情况下,可以使用类似源任务的预训练模型来解决特定的目标任务。
任务可以不同,但它们的领域应该相同。
换句话说,你不能在语音识别和图像分类任务之间进行迁移学习,因为输入数据集的类型不同。
你可以做的是在狗的照片上使用预先训练好的图像分类器来预测猫的照片。
Source: “How to build your own Neural Network from scratch in Python” by James Loy
速度
迁移学习减少了很大一部分培训时间,并允许立即构建各种解决方案。此外,它还可以防止设置复杂且昂贵的云 GPU/TPU。
社会公益
使用迁移学习对环境有积极的影响。
根据麻省理工科技评论的一项研究,在云 TPU 上训练的大型神经网络(200M+参数)在其生命周期内产生的二氧化碳相当于 6 辆汽车。迁移学习可以防止这些强大的处理单元的广泛使用。
深度迁移学习策略
迁移学习可以通过几种不同的策略应用于深度学习和机器学习领域。在这篇文章中,我将只涉及深度学习技术,称为深度迁移学习策略。
在深度学习模型上进行迁移学习有 3 种主要策略。
直接使用预先训练的模型
最简单的策略是通过直接应用来自源任务的模型来解决目标任务。
这种模型通常是大型(数百万个参数)神经网络,在最先进的机器上训练数天甚至数周。
大公司(公司、大学等。)倾向于向公众发布此类模型,旨在增强该领域的发展。
一些直接使用的预训练模型包括前面提到的伯特以及 YOLO(你只看一次)、手套、未监督的等等。
利用从预训练模型中提取的特征
我们可以通过丢弃最后一个完全连接的输出层,将预训练的神经网络视为特征提取器,而不是像前面的例子那样使用端到端的模型。
这种方法允许我们直接应用新的数据集来解决一个完全不同的问题。
它带来了两个主要优势:
- 允许指定最后一个完全连接层的尺寸。
例如,预训练网络可能具有来自最后完全连接之前的层的7×7×512输出。我们可以将其拉平为 21,055 ,这将产生一个新的 N x 21,055 网络输出( N —数据点的数量)。
- 允许使用轻量级线性模型(如线性 SVM、逻辑回归)。
因为预训练的复杂神经网络模型被用作新任务的特征,所以我们被允许训练更简单和更快速的线性模型,以基于新的数据集修改输出。
特征提取策略最适合于目标任务数据集非常小的情况。
微调预训练模型的最后几层
我们可以更进一步,不仅训练输出分类器,而且在预训练模型的一些层中微调权重。
典型地,网络的早期层(尤其是 CNN)被冻结,而最后的层被释放用于调谐。
这允许我们在现有模型上执行完整的训练,并在最后一层修改参数。
我们选择仅修改最后的图层,因为已经观察到网络中较早的图层捕获更多的通用要素,而较晚的图层则非常特定于数据集。
假设我们最初的预训练模型以非常高的准确度识别奔驰汽车。该模型的初始层倾向于捕捉关于车轮位置、汽车形状、曲线等的信息。我们可以在下一个识别法拉利汽车的任务中保留这些信息。然而,对于更具体的法拉利功能,我们应该用新的数据集重新训练最后几层。
话虽如此,当目标任务数据集非常大,并且与源任务数据集共享一个相似的域时,最好使用微调策略。
资源
本文的灵感来自一系列论文和教程,其中包括:
- 转移学习作者 Andrej Karpathy @ Stanford。
- 由 Dipanjan (DJ) Sarkar 撰写的综合实践指南,将学习与深度学习中的真实世界应用。
- Keras:利用深度学习对大型数据集进行特征提取作者 Adrian Rosebrock。
- 使用 Keras 进行微调和深度学习Adrian rose Brock。
- 迁移学习研究综述。
- 深度学习迁移学习的温和介绍作者 Jason Brownlee。
- Jason Brownlee 的《用计算机视觉模型在 Keras 中转移学习》。
感谢您的阅读。希望你喜欢这篇文章。❤️
什么是探索性空间数据分析(ESDA)?
提示:不是通常的 EDA。关于如何使用空间探索性数据分析(空间自相关)从数据中获得洞察力的指南
当您想要从基于位置的数据中探索模式时,您会怎么做?你怎么知道你的位置数据不是随机的?用相关性就够了吗?或者有没有其他的统计方法用于这种探索性的数据分析。
在本教程中,我将向您展示如何使用 Python 通过简单易行的步骤对您的位置数据执行探索性数据分析。Github 中也有本教程的代码。
探索性空间数据分析
在数据科学中,我们倾向于在进行任何建模或处理任务之前探索和研究数据。这有助于您识别模式、总结数据的主要特征或测试假设。传统的探索性数据分析并不明确调查数据集的位置成分,而是处理变量之间的关系以及它们如何相互影响。相关统计方法常用于探讨变量之间的关系。
相比之下,探索性空间数据分析(ESDA)将特定变量与位置相关联,同时考虑邻域中相同变量的值。用于此目的的方法称为空间自相关。
空间自相关描述给定变量中存在(或不存在)空间变化。像传统的相关方法一样,空间自相关具有正值和负值。正空间自相关是指彼此靠近的区域具有相似的值(高-高或低-低)。另一方面,负的空间自相关表示相邻区域不同(低值紧挨着高值)。
Spatial Autocorrelation: Source
探索性空间数据分析(ESDA)主要有两种方法:全局和局部空间自相关。全局空间自相关侧重于数据集中的总体趋势,并告诉我们数据集中的聚集程度。相比之下,局部空间自相关检测数据集中的可变性和发散性,这有助于我们识别数据中的热点和冷点。
获取数据
在本教程中,我们使用 Airbnb 数据集(点数据集)和伦敦的图层超级输出区域-LSOA-邻域(面数据集)。我们进行空间连接,将 Airbnb 房源的每个点连接到邻近区域。如果您想了解并在工作流中使用强大的空间连接工具。我这里有个教程:
[## 如何在 Python 中通过位置轻松连接数据—空间连接
如何在 Python 中轻松地进行空间连接,以及为什么它是数据科学中经常被忽略的强大工具。
towardsdatascience.com](/how-to-easily-join-data-by-location-in-python-spatial-join-197490ff3544)
我们使用的数据集是空间连接的伦敦 Airbnb 房产,带有每个本地区域(街区)的房产平均价格。
对于本教程,我们使用 Pandas、Geopandas 和 Python 空间分析库(Pysal) 库。所以让我们导入这些库。
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as pltimport pysal
from pysal import esda, weights
from esda.moran import Moran, Moran_Localimport splot
from splot.esda import moran_scatterplot, plot_moran, lisa_cluster
我们可以读取 Geopandas 中的数据。
avrg_price_airbnb = gpd.read_file(“london-airbnb-avrgprice.shp”)
avrg_price_airbnb.head()
以下是伦敦 Airbnb 房产均价的前 5 行。
由于我们有一个几何列(纬度和经度),我们可以映射数据。这是每个街区平均价格的 choropleth 图。
choropleth map — average prices of Airbnb properties in London.
有了这张 choropleth 地图,我们可以看到分箱的价格范围,但这并没有给我们任何统计数据,我们可以确定是否存在空间自相关(正或负,甚至热点和冷点在哪里。这就是我们接下来要做的。
空间权重和空间滞后
在执行任何空间自相关之前,我们首先需要确定空间权重和空间滞后。
空间权重是我们确定区域邻域的方式。有多种不同的统计方法用于确定空间权重,除此之外,本文将对每种方法进行深入解释。最常用的空间权重方法之一是我们使用的皇后邻接矩阵。这是一个解释女王邻接矩阵如何工作的图表(也包括车邻接矩阵)
Contiguity Matrix Source
为了计算皇后邻接空间权重,我们使用 Pysal。
w = weights.Queen.from_dataframe(avrg_price_airbnb, idVariable=”LSOA_CODE” )w.transform = "R"
另一方面,空间滞后是给定变量(在我们的例子中是价格)的空间权重矩阵的乘积。空间分支对行进行标准化,并获取每个加权邻域中价格的平均结果。
avrg_price_airbnb[“w_price”] = weights.lag_spatial(w, avrg_price_airbnb[“price”])
现在,我们在表中创建了一个新列来保存每个街区的加权价格。
全球空间自相关
全局空间自相关决定了数据集中的整体模式。这里我们可以计算是否有趋势,并总结感兴趣的变量。Moran 的 I 统计通常用于确定全局空间自相关,因此让我们来计算一下。
y = avrg_price_airbnb[“price”]
moran = Moran(y, w)
moran.I
我们得到这个数据集的数字 0.54 。这个数字是什么意思?这个数字总结了数据集的统计数据,就像非空间数据的平均值一样。莫兰的 I 值范围从-1 到 1。在我们的案例中,该数字提供了该数据集中存在正空间自相关的信息。请记住,我们仅使用 Moran 的 I 统计量来确定全局自相关。它并没有告诉我们这个正的空间自相关存在于哪里(我们接下来会这样做)。
我们使用 Moran 的 I 图来显示全球空间自相关,这与其他散点图相同,使用线性拟合来显示两个变量之间的关系。
fig, ax = moran_scatterplot(moran, aspect_equal=True)
plt.show()
Moran’s I Scatter Plot
Moran 的 I 散点图和 Moran 的 I 散点图都显示了数据集中不同位置的正相关观察值。让我们看看数据集中哪里有空间变化。
局部空间自相关
到目前为止,我们只确定了邻近地区的房地产价格与其位置之间存在正的空间自相关。但是我们还没有探测到星团在哪里。空间关联局部指标(LISA)就是用来做这个的。LISA 将区域分为四组:高值接近高值(HH),低值接近低值(LL),低值在其邻域内具有高值,反之亦然。
我们已经计算了权重(w ),并将价格确定为我们感兴趣的变量(y)。为了计算 Moran 局部,我们使用 Pysal 的功能。
# calculate Moran Local
m_local = Moran_Local(y, w)
和 plot Moran 的局部散点图。
# Plot
fig, ax = moran_scatterplot(m_local, p=0.05)
ax.set_xlabel(‘Price’)
ax.set_ylabel(‘Spatial Lag of Price’)
plt.text(1.95, 0.5, “HH”, fontsize=25)
plt.text(1.95, -1.5, “HL”, fontsize=25)
plt.text(-2, 1, “LH”, fontsize=25)
plt.text(-1, -1, “LL”, fontsize=25)
plt.show()
正如我们提到的,散点图将这些区域分为四组。
Moran Local Scatter Plot — LISA
现在,这很酷,我们可以看到所有的值被分为四组,但令人兴奋的是看到这些值在地图上聚集在一起。同样,Pysal (splot)中有一个函数可以绘制 LISA 结果的地图。
LISA Cluster Map -Airbnb Average price per neighborhood.
上面的地图显示了 Airbnb 房产平均价格的变化。红色表示聚集在一起的社区,这些社区的物价很高,周围也很高(主要是市中心)。蓝色区域表示价格低的地方,周围也是低价值价格的区域(主要是外围)。同样有趣的还有低-高和高-低面积浓度。
与我们从本教程开始的 Choropleth 地图相比,LISA 更加清晰,并提供了数据集的清晰图片。探索性空间数据分析(ESDA)技术是帮助您识别可应用于任何给定变量的空间自相关和局部聚类的强大工具。
结论
在本教程中,我们探讨了如何对空间数据执行探索性数据分析(EDA)。本教程的代码可以在 GitHub 的笔记本和数据中找到。
此时您不能执行该操作。您已使用另一个标签页或窗口登录。您已在另一个选项卡中注销,或者…
github.com](https://github.com/shakasom/esda/blob/master/Exploraty_Spatial_Data_Analysis.ipynb)
您也可以从这里直接运行 Google Colab 笔记本:
编辑描述
colab.research.google.com](https://colab.research.google.com/drive/1R8hzFFX50qnfipoXcdXi4zCmG0zvTXD5)
指数分布——直觉、推导和应用
何时使用指数分布
我们总是从“为什么”开始,而不是直接进入公式。如果你明白其中的原因,它会一直伴随着你,你会更有可能把它应用到你自己的工作中。
1.为什么我们必须发明指数分布?
预测直到下一个事件(即成功、失败、到达等)的等待时间。).
例如,我们希望预测以下内容:
- 到顾客完成浏览并在您的商店实际购买商品的时间 (成功)。
- AWS EC2 上的硬件出现故障****之前的时间。
- 你需要等待**的时间直到**公交车到达(到站)。****
那么,我的下一个问题是这样的:为什么λ * e^(−λt)是下一个事件发生之前的时间的 PDF?
接下来的问题是:X ~ Exp(0.25)是什么意思? 参数 0.25 是指 0.25 分钟、小时还是天,还是指 0.25 事件?
从这一点开始,我假设你对泊松分布了如指掌。如果你没有, 这篇文章 会给你一个清晰的思路。
X~Exp(λ)👉泊松中的指数参数λ和λ一样吗?
****关于 X ~ Exp(0.25) 有一点可以让你免于混淆,那就是记住 0.25 是 而不是持续时间,但它是事件 速率,与 泊松过程 中的参数λ相同。
****例如,你的博客每天有 500 名访客。那是一个率。一个小时内到店的顾客数量,每年的地震次数,一周内的车祸次数,一页的错别字数量,在 Chipotle 发现的头发数量等。、都是单位时间的**率(λ)是泊松分布的参数。
然而,当我们对事件之间的经过时间建模时,我们倾向于用时间**来代替速率,例如计算机可以无故障开机的年数是 10 年 (而不是 说 0.1 故障/年,*当你看到时,术语——指数分布的“均值”——1/λ就是它的意思。*******
当你看到术语衰变参数或者更糟糕的术语衰变率时,困惑就开始了,这个术语在指数分布中经常使用。衰变参数以时间表示(例如,每 10 分钟、每 7 年等。),它是泊松中速率(λ)的a倒数(1/λ)。想一想:如果你每小时得到 3 个客户,就意味着你每 1/3 小时得到一个客户。****
所以,现在你可以回答如下: “X ~ Exp(0.25)”是什么意思?
意思是泊松比** 会是 0.25。在一个单位时间(可以是分钟、小时、年)内,事件平均发生 0.25 次。把这个转换成时间项,假设你的单位时间是一个小时,那么事件发生需要 4 个小时(0.25 的倒数)。**
***** Confusion-proof : Exponential‘s parameter λ is the same as that of Poisson process (λ).****
2.让我们从零开始推导指数的 PDF!
我们的第一个问题是:为什么λ * e^(−λt)是直到下一个事件发生的时间的 PDF?
指数分布的定义是一个 泊松过程 中的事件之间的时间的概率分布。***
想想看, 事件发生前的时间量是指在等待期间,没有一个事件发生。
换句话说,这就是泊松(X=0)。
Poisson(X=0): the first step of the derivation of Exponential dist.
关于泊松 PDF 需要记住的一点是泊松事件(X=k)发生的时间周期仅仅是一(1)个单位时间。
*如果你想对“在 持续时间 t ,不仅仅是在 **一个单位时间内,*什么都不发生”的概率分布建模,你会怎么做呢?
***P(Nothing happens during t time units)**= P(X=0 in the first time unit)
* P(X=0 in the second time unit)
* … * P (X=0 in the **t-th** time unit)
= e^−λ * e^−λ * … * e^−λ = **e^(-λt)***
泊松分布假设事件的发生相互独立。所以我们可以通过将 P( X =0 在单个单位时间内) t 乘以,计算出在 t 单位时间内零成功的概率。
***P(T > t)** **= P(X=0 in t time units) = e^−λt*** **T** : **the random variable of our interest!
** the random variable for **the waiting time until the first event**
* **X** : **the # of events in the future which follows the Poisson dist.*** **P(T > t) :** The probability that the waiting time until the first event is greater than **t** time units
* **P(X = 0 in t time units) :** The probability of zero successes in **t** time units*
*PDF 是 CDF 的衍生物。
既然我们已经有了指数的 CDF, **1 - P(T > t),*就可以通过微分得到它的 PDF。
The probability density function is the derivative of the cumulative density function.
3.无记忆属性
***Defintion:****P(T > a + b | T > a) = P(T > b)***
这意味着…
给我看看证据?
无记忆是“有用”的属性吗?
使用指数分布对机械设备的寿命建模是否合理?
例如,如果设备已经使用了九年,那么无记忆意味着它将继续使用三年(因此,总共 12 年)的概率与一台全新的机器继续使用三年的概率完全相同。
***P(T > 12|T > 9) = P(T > 3)***
你觉得这个等式合理吗?
对我来说,没有。根据我的经验,设备越老越容易坏。为了对这一特性建模,例如,我们可以使用威布尔分布。
那么,什么时候使用指数分布比较合适呢?
车祸。如果在过去的五个小时里没有人撞到你,这不会增加或减少你发生车祸的几率。这就是为什么 λ通常被称为危险率。
还有谁拥有无记忆属性?
指数分布是唯一的连续分布,它是无记忆的(或者具有恒定的失效率)。几何分布,它的离散对应物,是唯一无记忆的离散分布。
4.应用程序 IRL🔥
a)等待时间建模
指数随机变量的值有更多的小值和更少的大值。你正在等的公共汽车可能在接下来的 10 分钟内到达,而不是接下来的 60 分钟。
使用指数分布,我们可以回答下面的问题。
1.公共汽车平均每 15 分钟来一趟。(假设从一辆公交车到下一辆公交车的时间呈指数分布,这意味着一小时内到达的公交车总数呈泊松分布。)而我刚好错过了公交车!司机不友好。我一到,司机就关上门走了。如果下一班公共汽车在十分钟内没有到达,我必须打电话给优步,否则我会迟到。下一辆公共汽车不到十分钟到达的可能性有多大?
2.90%的公共汽车在前一辆公共汽车几分钟内到达?
3.两辆公共汽车平均需要多长时间到达?
*如果你想看看你的答案是否正确,请在评论中发表你的答案。
b)可靠性(故障)建模
既然我们可以模拟成功的事件(公共汽车的到达),为什么不能模拟失败——产品持续的时间?
AWS 硬件在需要重启之前可以运行的小时数呈指数分布,平均为 8000 小时(大约一年)。
1.您没有备份服务器,需要不间断运行 10,000 小时。不重启服务器就能完成运行的可能性有多大?
2.服务器在 12 个月到 18 个月之间不需要重启的概率是多少?
请注意,有时指数分布可能不合适——当故障率在整个生命周期内变化时。然而,它将是唯一一个具有这种独特性质的分布——恒定危险率。
c)服务时间建模(排队论)
代理的服务时间(例如,Chipotle 员工为我做墨西哥卷饼需要多长时间)也可以建模为指数分布变量。
流程的总长度——几个独立任务的序列——遵循 Erlang 分布:几个独立的指数分布变量之和的分布。
5.概述:泊松分布和指数分布之间的关系
如果单位时间内的事件数量遵循泊松分布,则事件之间的时间量遵循指数分布。
假设事件之间的时间不受之前事件之间的时间的影响(即,它们是独立的),那么单位时间内的事件数量遵循泊松分布,比率为 λ = 1/μ 。
6.锻炼
我发现我对数学题目的理解大部分来自于做题。所以,我鼓励你也这样做。尝试完成下面的练习,即使它们需要一些时间。
- 设 U 是 0 到 1 之间的均匀随机变量。那么指数随机变量 X 可以被生成为
***X = -1/λ * ln(U)***
证明原因。
2.PDF 的 y 轴上的最大值为 λ 。为什么会这样呢?
Probability Density Function of Exponential Distribution
3. X1 和 X2 是独立的指数随机变量,速率为 λ 。
X1 ~ Exp(λ)
X2 ~ Exp(λ)
让 Y=X1+X2 。
Y 的 PDF 是什么?这个分布可以用在哪里?
你可能喜欢的其他直观的文章:
…为什么泊松会发明这个?…](/poisson-distribution-intuition-and-derivation-1059aeab90d) [## 贝塔分布——直觉、例子和推导
…二项式和贝塔式的区别在于前者模拟成功的次数,而后者模拟成功的概率…](/beta-distribution-intuition-examples-and-derivation-cf00f4db57af)*
对于自动事实核查来说,什么是“足够好”呢?
自动化事实核查即将到来,但我们无法就基本定义和标准达成一致。
虽然事实审查员总是很忙,但选举季节不可避免地增加了他们的工作量。因此,事实核查社区中的许多人梦想有一天自动事实核查系统能够在总统辩论等重要事件中实时显示事实核查。
但是什么是自动事实核查呢?出于本文的目的,自动事实核查系统依靠计算方法来 1)减少有问题的陈述(索赔)和更正(事实核查文章)之间的滞后时间,以及 2)增加与事实核查相关的索赔数量。
最常讨论的(和资助的)开发自动化事实检查的策略依赖于“声明匹配”。主张匹配系统从政治辩论、演讲、推文等中提取文本。并标识已经被事实检查过语句,并将已经创建的事实检查文章链接到“有问题的”文本片段。这种方法理论上有助于核实更多内容,因为演讲、辩论、推特等中有许多不真实或误导性的陈述。重复的说法可能已经被事实证实(例如,奥巴马不是在美国出生的,疫苗会导致自闭症)。
示例:已审核的索赔
索赔匹配系统的一个实现是谷歌的短命审查索赔功能,它出现在新闻出版商的谷歌搜索结果页面的子集上。该功能将新闻出版商文章中的声明与已经存在的事实核查文章相匹配。
该专题发布两个月后,保守派新闻媒体抱怨称,他们受到了该专题不公平的攻击。谷歌删除了这一功能,并向波因特解释说,他们“在我们将事实核查映射到出版商的系统中遇到了挑战,经过进一步检查,很明显我们无法为用户提供我们想要的质量。”
Image of the Reviewed Claims feature that appeared on some news publisher search result pages from November 2017 to January 2018. Reviewed Claims was removed by Google after conservative media backlash and amid quality concerns.
虽然我不确定审查索赔系统是如何设计的,但谷歌研究人员在 2018 年发表了一篇论文,概述了一个解决“索赔相关性发现问题”的系统,即识别包含(并支持)事实核查声明的在线文章。如果这听起来相似,基本上就是前面描述的索赔匹配。谷歌的论文描述了一种准确率约为 82%的方法。
过去一年来,“已审核索赔”案例研究吸引了我,并促使我考虑以下两个问题:
1。对于一个公开发布的自动化事实检查工具,什么是合适的准确度分数(和相关的度量标准)?
2。我们应该如何定义“相关的”索赔匹配?
我怀疑(事实核查社区的许多其他人也怀疑)我们是否接近自动化事实核查系统接近完美的准确性水平,因此我们需要坦率地讨论令人满意的精确度,并回忆这些系统的分数,因为我们计划将这项研究转移到公共领域。这种对话对于构建工具的事实核查组织、试图根据事实核查文章的存在来了解消息来源可信度的用户,以及其收入流被推荐算法改变的新闻出版商来说非常重要,推荐算法会考虑出版商的内容是否已被事实核查人员标记。
然而,如果我们不理解何时一个声明应该与事实核查相匹配,那么关于适当指标的讨论是没有用的。概括地说,事实核查文献已经建立了一个“良好的”自动权利要求匹配系统,将有问题的权利要求与相关的事实核查文章进行匹配。
虽然这看起来很简单,但确定相关性实际上比乍看起来要复杂得多。换句话说,是的,在自动事实核查中没有一个“足够好”的共同定义,但是,更根本的是,我们没有一个“相关”索赔匹配的共同定义。
确定相关性:一个思维实验
这里有一个快速练习来说明在索赔匹配中确定相关性的困难。**思考以下哪个标题应与事实核查“疫苗不会导致自闭症”的说法相匹配(即相关*)***
- “疫苗可能导致自闭症:“**注意,这篇文章并没有说疫苗导致自闭症。标题用“可能”这个词来修饰疫苗和自闭症之间的联系。
- ***“关于疫苗的效果,我们并不知道我们应该知道的一切”😗这个标题是第一个的更极端版本。为了增加复杂性,让我们想象这篇文章甚至没有在文章的任何地方提到自闭症这个词,但它确实建议父母尽可能久地等待给孩子接种疫苗,因为潜在的风险。
- ***“杰西卡·贝尔称疫苗可能导致自闭症”😗这篇文章没有对疫苗是否会导致自闭症表明立场,这位新闻发布者似乎只是在报道一位名人所说的话。
- ***“疫苗可能导致乳腺癌:“*这篇文章没有提到自闭症,但确实说 MMR 疫苗和乳腺癌之间有直接联系。
- ***“疫苗导致自闭症,我是英国女王”😗这篇文章多次提到疫苗导致自闭症,但本意是讽刺。
确定“疫苗不会导致自闭症”是否是这些文章中每一篇的相关主张匹配简单吗?我的研究表明,对大多数人来说,事实并非如此。我对本科生和亚马逊机械土耳其工人进行了一项小规模定性研究,其前提与上述思想实验相似。我发现本科生在这项任务上经历了一段具有挑战性的时间,但在和解过程之后,最终彼此达成了适度的一致。然而,亚马逊土耳其机械公司的员工对相关索赔匹配的定义要比本科生宽松得多。这一初步发现还需要进一步的研究。
在事实核查文献中,关联性是如何定义的?
我发现,关于定义相关性的定义挑战,目前的出版物和自动事实核查系统的描述对这些基本定义缺乏重视。我在下面提供了两个例子,但还有其他例子。
- 在 Google 关于“索赔相关文档发现”的研究论文中,有两条关于相关性的评论。一个是技术定义:“给定一篇带有权利要求 c 的事实核查文章,权利要求相关文档是一个处理 c 的相关文档。”我个人认为这个定义并不充分。更能说明这一困境的是作者在引言中的评论:“权利要求相关性发现问题不需要在文档中出现字面上或精确的权利要求,而是旨在找到那些看起来在精神上一致的权利要求。”
主张只需要“精神上一致”就可以成为相关匹配的想法有点说明问题,因为它可能意味着第一个带项目符号的假设性主张“疫苗可能导致自闭症”,我上面概述的应该被标记为与事实检查“疫苗不会导致自闭症”相关,但这个定义仍然留下了如何解决其他几个主张的问题。
- ClaimBuster 是一个端到端的自动事实核查系统,具有索赔匹配组件。据我所知,这是自动化的事实核查系统,在学术场所被写得最多。在讨论“索赔匹配器”组件如何工作时,给出了下面的解释:“索赔匹配器搜索事实检查库,并返回那些与索赔匹配的事实检查…系统有两种方法来测量索赔和事实检查之间的相似性…一个 Elasticsearch 服务器被部署用于基于标记相似性搜索知识库,而一个语义相似性搜索工具包 Semilar 被应用于基于语义相似性的搜索。我们将两者的搜索结果结合起来,寻找与给定声明相似的事实核查。”
我也认为这种确定相关性的解释是不充分的。对一个系统所采用的技术方法的描述并不能解决任何关于相关性定义的细微差别的遗留问题。它也不允许我们以一种有意义的方式将这个系统与谷歌论文中的“精神一致”指南进行比较。
最后…
其他人呼吁在过度承诺自动事实核查的能力时要谨慎,我认为这些担忧是有根据的。然而,我提出了一些不同的建议:我认为事实核查社区需要确保我们批判性地思考当谈到自动事实核查系统时,“足够好”和“相关”意味着什么。我有兴趣听听其他人对这些问题的想法,请随时联系。
感谢 埃尼·穆斯塔法拉杰 他的反馈极大地改善了这篇博文的发展轨迹。
什么是标签平滑?
一种让你的模型不那么过于自信的技巧
当使用深度学习模型进行分类任务时,我们通常会遇到以下问题:过度拟合和过度自信。过拟合得到了很好的研究,可以通过早期停止、放弃、权重调整等来解决。另一方面,我们对付过度自信的工具更少了。标签平滑是一种解决这两个问题的正则化技术。
过度自信和校准
如果一个分类模型的预测结果概率反映了它们的准确性,那么它就是校准的。例如,考虑我们数据集中的 100 个例子,每个例子的模型预测概率为 0.9。如果我们的模型被校准,那么 90 个例子应该被正确分类。类似地,在另外 100 个预测概率为 0.6 的例子中,我们预计只有 60 个例子被正确分类。
模型校准对于以下方面非常重要
- 模型的可解释性和可靠性
- 决定下游应用的决策阈值
- 将我们的模型集成到集成或机器学习管道中
过度自信的模型没有被校准,它的预测概率总是高于准确性。例如,对于精度仅为 0.6 的输入,它可能会预测 0.9。请注意,测试误差较小的模型仍然可能过于自信,因此可以从标签平滑中受益。
标签平滑公式
标签平滑用 y_hot 和均匀分布的混合代替一个热编码的标签向量 y_hot :
*y_ls* = (1 - *α*) * *y_hot* + *α* / *K*
其中 K 是标注类的数量, α 是确定平滑量的超参数。如果 α = 0,我们获得原始的一个热码编码的 y_hot 。如果 α = 1,我们得到均匀分布。
标签平滑的动机
当损失函数是交叉熵时,使用标签平滑,并且模型将 softmax 函数应用于倒数第二层的 logit 向量 z 以计算其输出概率 p 。在这种设置中,交叉熵损失函数相对于 logits 的梯度简单地为
∇CE = *p* - *y =* softmax(*z*) *- y*
其中 y 为标签分布。特别是,我们可以看到
- 梯度下降会尽量使 p 接近 y 。
- 梯度限制在-1 和 1 之间。
独热编码标签鼓励将最大可能的 logit 间隙输入 softmax 函数。直觉上,较大的 logit 差距与有界梯度相结合会使模型的适应性降低,并对其预测过于自信。
相比之下,平滑的标注鼓励小的 logit 间隙,如下例所示。[3]显示,这导致更好的模型校准,并防止过度自信的预测。
具体的例子
假设我们有 K = 3 个类,我们的标签属于第 1 类。设[ a , b , c 为我们的 logit 向量。
如果我们不使用标签平滑,标签向量就是独热编码向量[1,0,0]。我们的模型将使 a ≫ b 和 a ≫ c 。例如,将 softmax 应用于 logit 向量[10,0,0]会得到四舍五入到 4 位小数的[0.9999,0,0]。
如果我们使用 α = 0.1 的标签平滑,平滑后的标签向量≈ [0.9333,0.0333,0.0333]。logit 向量[3.3322,0,0]将平滑后的标签向量近似到 softmax 之后的 4 位小数,并且它具有更小的间隙。这就是为什么我们称标签平滑为正则化技术,因为它限制了最大的 logit 变得比其余的大得多。
履行
常见问题
问:我们什么时候使用标签平滑?
答:每当分类神经网络遭受过度拟合和/或过度自信时,我们可以尝试标签平滑。
问:我们如何选择 α ?
答:就像其他正则化超参数一样,没有选择 α 的公式。通常通过试错来完成,而 α = 0.1 是一个很好的起点。
问:我们可以在标签平滑中使用均匀分布以外的分布吗?
答:技术上来说是的。在[4]中,理论基础是为任意分布开发的。也就是说,绝大多数关于标签平滑的实证研究都使用均匀分布。
问:标签平滑在深度学习之外使用吗?
答:不尽然。大多数流行的非深度学习方法不使用 softmax 函数。因此,标签平滑通常不适用。
进一步阅读
- [3]研究了标签平滑的工作方式和原因,提供了一种新的可视化方案,并分析了标签平滑对于不同任务的性能。知识蒸馏的部分尤其有趣。
- [5]和[4]讨论了标签平滑如何影响损失函数及其与 KL 散度的关系。
- [1]第 7.5.1 章介绍了标签平滑如何帮助处理有噪声的标签。
- [2]介绍了温度缩放,这是一种简单而有效的校准神经网络的方法。
参考
- 古德菲勒、本吉奥和库维尔。深度学习 (2016),麻省理工学院出版社。
- C.郭,g .普莱斯,y .孙,k .温伯格。关于现代神经网络的校准 (2017),ICML 2017。
- R.米勒、s .科恩布利斯和 g .辛顿。标签平滑何时有帮助? (2019),NeurIPS 2019。
- G.佩雷拉,g .塔克,j .乔洛夫斯基,凯泽和 g .辛顿。通过惩罚置信输出分布来正则化神经网络 (2017),arXiv。
- C.Szegedy、V. Vanhoucke、S. Ioffe、J. Shlens 和 Z. Wojna。重新思考计算机视觉的初始架构 (2016),CVPR,2016。
什么是学习?
回到智力的基础
Photo by Thought Catalog on Unsplash
Medium 有很多定义或解释机器学习及其技术和子领域的文章。作为一名人工智能专家,我很喜欢这个。但是,在定义什么是机器学习之前,我们需要问一个更根本的问题:学习本身是什么?
让我们用可能是最基本的方式来定义学习:
学习是一个智能体的智能变化。
智能体可以是人、其他动物甚至是植物,也可以是机器,只要它表现出智能。智能需要自己的定义,我借用通用智能:机器智能的定义:
“智能衡量一个代理人在广泛的环境中实现目标的能力.”
使用智能的这个定义,学习就变成了一个代理人实现其目标的能力的变化。这种能力可以通过获取知识来改变:例如,更多地了解你的环境可以让你在那个环境中更好地实现你的目标。然而,获得新技能显然也能让你更好地实现目标。一个人甚至可以改变自己的道德价值观,在这种情况下,一个人的实际目标也可以改变:这显然改变了一个人实现目标的能力,因为目标本身也在改变。
我想读者可能会反对这篇文章中给出的学习的定义,因为它不包括“更好”这个词。大多数情况下,学习被视为在某方面变得更好:例如,更擅长下棋。给出的定义只是简单地谈论智力的变化,所以下棋变得更差也算学习。这不是我们通常所说的“学习”!然而,在一项技能上变得更好并不总是意味着在实现个人的目标上变得更好。因此,为了避免混乱,我坚持在智力上“改变”。
感谢阅读!您可能还喜欢:
AI 末日场景被迅速驳回
towardsdatascience.com](/the-major-problem-with-ai-8f53cf7d3a50)
什么是“线性”回归模型?
线性回归模型背后的线性假设以及为什么线性很重要
线性回归模型是机器学习和统计学领域中最简单的模型之一。也就是说,线性回归背后的线性假设经常被误解。
例如,下面的 2 个模型都是线性回归模型,即使右边的线看起来也不像线性的。
Figure 1. Two different linear regression models for a data set
如果是惊喜,这篇文章送给你。在这篇文章中,我试图解释线性回归模型背后假设的是什么样的线性,以及为什么线性很重要。
为了回答这些问题,让我们通过两个简单的例子来一步步了解线性回归是如何工作的。
示例 1:最简单的模型
让我们从最简单的例子开始。给定下面的训练数据— 3 对( x 、 y ) — (2,4)、(5,1)、(8,9) ,我们想要找到一个对目标变量 y 和输入变量 x 之间的关系进行建模的函数。
Figure 2. A training data set to use in this article
我们的第一个模型是最简单的模型,如下所示。
所以我们尝试用这个非常简单的线性函数来模拟 x 和 y 之间的关系。这里需要注意的是,该函数不仅与输入变量 x 成线性关系,而且与参数 a、b 成线性关系。
现在,我们的目的是确定最符合训练数据的参数 a 和 b 的值。
这可以通过测量每个输入 x 的实际目标值 y 和模型 f(x) 之间的失配来实现,并使失配最小化。这种不匹配被称为误差函数。
误差函数有许多不同的选择,但最简单的一个是 RSS,即每个数据点 x 的模型 f(x) 与相应目标值 y 之间的误差平方和。
利用误差函数的概念,我们可以将“确定最适合训练数据的参数 a,b 重新表述为“确定最小化误差函数的参数 a,b ”。
让我们计算训练数据的误差函数。
好的,上面的等式是我们想要最小化的误差函数。但是我们如何找到使这个函数最小化的参数 a,b 的值呢?为了得到一个概念,让我们想象这个函数。
Figure 3. Error function of the first model
从上面的 3D 图中你可以本能地猜测,这个函数是一个凸函数。凸函数的优化(寻找最小值)比一般的数学优化简单得多,因为任何局部最小值总是凸函数的全局最小值。(非常简单的解释就是凸函数只有一个极小点,比如“U”形)由于凸函数的这个特性,可以通过简单地求解如下的偏微分方程来找到使函数最小的参数。
让我们解决我们的案子。
通过解上面的方程,我们得到 *a = 5/6,b = 1/2。*因此,我们的第一个模型(最小化 RSS)如下所示。
Figure 4. The first model
示例 2:简单的曲线模型
现在,对于相同的数据点,让我们考虑另一个模型,如下图所示。
如你所见,这不再是输入变量 x 的线性函数了。然而,这仍然是参数 a,b 的线性函数。
让我们看看这种变化如何影响模型拟合的过程。我们将使用与上一个例子相同的错误函数— RSS。
如上所述,等式看起来与前一个非常相似。(系数的值不同,但方程的形式相同。)观想如下。
Figure 5. Error function of the second model
形状看起来也差不多。这还是一个凸函数。这里的秘密是,当我们用训练数据计算误差时,输入变量被给定为具体值(例如,在我们的数据集中, x 的值被给定为 2,5 和 8——(2,4),(5,1),(8,9) )。因此,无论输入变量的形式有多复杂(例如, x,x,sin(x),log(x) 等),误差函数中的值都是常量。
由于第二个模型的误差函数也是凸函数,我们可以通过与前一个例子完全相同的过程找到最佳参数。
通过求解上述方程,我们得到 *a = 61/618,b = 331/206。*所以,我们的第二个模型得到如下。
Figure 6. The second model
结论:线性回归模型背后的线性
即使一个与输入变量 x 成线性关系,一个与 x 成非线性关系,上述两个例子也可以用完全相同(且非常简单)的程序解决。这两个模型的共同特点是两个函数都与参数 a、b 成线性关系。这是线性回归模型背后假定的线性,也是线性回归模型数学简单性的关键。
上面我们只看到了两个非常简单的模型,但是一般来说,模型对其参数的线性度保证了它的 RSS 总是一个凸函数。这就是为什么我们可以通过求解简单的偏微分方程得到最优参数的原因。这就是线性度很重要的原因。
什么是线性回归?第二部分
在任何企业中,都有一些容易衡量的变量,如年龄、性别、收入、教育水平等。还有一些难以衡量的变量,如贷款金额、病人住院天数、10 年后的房价等。因此回归是一种技术,它使你能够在易于测量的变量的帮助下确定难以测量的变量。
推荐:什么是线性回归?零件:1
线性回归是一种回归技术,可定义如下:
“线性回归是一个研究领域,它强调两个 连续变量 之间的********预测变量响应变量 ”。
(注:当有一个以上的预测变量时,则成为多元线性回归。)**
- 预测变量通常表示为 x,也称为自变量。
- 响应变量通常表示为 y,也称为因变量。
让我们借助 R 中的一个例子来理解它。R 中有一个内置的数据集“cars ”,它包含 50 对速度(英里/小时)与停车距离(英尺)的数据点,这些数据点是在 1920 年收集的。我截取了前 25 个数据点的截图,让你对数据集有所了解。
在上面的数据集中,如果我们仔细观察,我们会发现不同的汽车在相同的速度下有不同的停车距离。这可能有多种因素。一些因素可能是不同的天气条件、轮胎质量、车型、道路质量、交通状况等。
为了理解线性回归,我们要避开所有其他因素,只关注汽车的速度。因此,我们的目标是找出速度和停车距离之间是否存在任何线性关系,并将绘制该关系,然后预测所有数据点的平均停车距离。
通过观察协方差和相关系数,我们可以对这种关系有一些直觉,如下所示:
共方差:
cov(cars_data$dist, cars_data$speed) #covariance
## [1] 109.9469
距离和速度之间的协变是 109.9469。它的值是正的,这告诉我们变量在同一个方向上一起运动。(负值时相反)。
关联:
为了了解变量如何一起移动的强度,将协方差标准化为无量纲量,即相关性。相关系数 r 是一个介于-1 到+1 之间的数字,它告诉我们(回归)线与数据的拟合程度。
cor(cars_data$speed, cars_data$dist) # Correlation
## [1] 0.8068949
- 车速与距离的相关系数为 0.8068949。
- 由于该值接近于 1,并且具有+ve 符号,因此我们可以得出变量正相关的结论。
推荐文章:协方差和相关性详解
让我们通过绘制散点图来可视化数据集。
- 独立变量(预测变量)—速度(mph) —绘制在 X 轴上。
- 因变量(响应变量)—停车距离(英尺)—绘制在 Y 轴上。
plot(cars_data$speed,cars_data$dist,xlab="Speed in miles per hour",ylab="Distance in feet",main="Stopping Distance Vs. Speed", col= "blue")
散点图的观察结果:
- 红色标志点,同一速度有多个停车距离。这是可能的,因为不同的汽车,不同的道路,不同的天气条件等。
- 因此,如果我们取红色标记处所有这些点的平均值,那么它将给出该点的平均停车距离,但如果我们想知道黄色标记处的停车距离呢?我们没有给出这个黄点的任何数据。
- 因此,如果我们取所有的点,并以某种方式估算黄色标记点的平均值,这将是该点的停车距离,而不是关注任何局部点。
如何做到这一点,如果我们画一条穿过所有数据点的直线,这将给出作为速度函数的停车距离的样本平均值。
这条线方程看起来像是: y = m*x + c m:斜率,c:y 处的截距
所以如果我们改变 m 和 c,那么它会给我们所有可能画出的线。
为了得出结论,我们需要找到斜率 m 和截距 c 的最佳值,这将产生最佳拟合线。所以让我们来了解一下什么是最佳拟合线。
最佳拟合线:
Best Fit Line
因此可以说,通过大多数数据点的线是最佳拟合线。但是现在如果我们看到 fig-01,我们还会说它是最佳拟合线吗?不。如果我们记得我们的中学时代,被要求画一条最佳拟合线,那么我们会画一条类似于图-02 中橙色线的线。我们的大脑如何识别它为最佳拟合线。令人惊讶的是,它没有通过任何数据点。所以它是如何被画出来的,也许是通过把所有数据点的距离最小化的点连接起来。
先来了解一下背后的一些数学。
- y 是数据点 x 的实际值。
- ŷ = m*x + c (ŷ读作 y-hat,这是使用我们试图找出的一些 m 和 c 对数据点 x 的预测值)
差值 y — ŷ 是一个误差项,也称为残差。考虑到所有的数据点,这将是**σ(y(I)—ŷ(i)).**这被称为所有数据点的平均距离,需要最小化,但是最小化意味着什么呢?我们是否也考虑误差的负值,如果是的话,那么如果两个数据点有+2 和-2 的误差,它们将在求和计算总误差时被抵消?因此,最小化残差的最佳方法是最小化误差平方和,即:
现在有两个未知数 m 和 c。因此,使用微积分,如果我们对 m 和 c 求偏导数,并使它们等于 0,然后求解这两个方程,我们将得到斜率 m,如下所示:
其中 xbar 是 x 值的平均值,ybar 是 y 值的平均值。
截距 c 可以通过将(xbar,ybar)点代入公式 y = m*x + c 来计算,以代替 x 和 y,因为我们知道最佳拟合线将通过 x 和 y 的中点,即 xbar 和 ybar。并且已经计算了 m 的值。
这种拟合最佳直线的方法称为最小二乘回归
然而在实践中,我们不需要手动计算所有这些,幸运的是我们有 R 个内置函数来做这件事。让我们看看这些功能:
- lm 函数用于拟合线性模型
LinearReg = lm(dist ~ speed, data = cars_data)
coefficients(LinearReg)
## (Intercept) speed
## -17.579095 3.932409## c = -17.579095
## m = 3.932409## Summary of the linear model:
summary(LinearReg)##
## Call:
## lm(formula = dist ~ speed, data = cars_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.069 -9.525 -2.272 9.215 43.201
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.5791 6.7584 -2.601 0.0123 *
## speed 3.9324 0.4155 9.464 1.49e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 48 degrees of freedom
## Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
## F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
让我们使用内置函数绘制最佳拟合线,如下所示:
plot(cars_data$speed,cars_data$dist,xlab="Speed in miles per hour",ylab="Distance in feet",main="Stopping Distance Vs. Speed: Best fit line", col= "blue")
abline(LinearReg,col="steelblue",lty=1,lwd=4) # The function adds straight line to a plot
因此,从上面的最佳拟合线,我们可以确定人口数据中任何数据点的停止距离。当两个连续变量之间存在线性关系时,线性回归是预测响应变量的值的一种非常强大的技术。
请在下面的评论区分享你的想法/想法。
本文首次出现在“科技隧道”博客上,网址为https://ashutoshtripathi . com/2019/01/06/what-is-linear-regression-part 2/
什么是逻辑回归?
逻辑回归是分类问题中使用最广泛的机器学习算法。在其原始形式中,它用于只有两个类别要预测的二元分类问题。然而,通过很少的扩展和一些人脑,逻辑回归可以很容易地用于多类分类问题。在这篇文章中,我将解释二进制分类。我还将解释最大化对数似然函数背后的原因。
为了理解逻辑回归,需要很好地理解线性回归的概念及其成本函数,它只不过是最小化误差平方和。我在之前的文章中已经详细解释了这一点,我建议你在深入研究逻辑回归之前刷新一下线性回归。假设你对线性回归有很好的理解,让我们开始深入研究逻辑回归。然而,又出现了一个问题,为什么我们不能用线性回归来解决分类问题。让我们先理解这一点,因为这将是理解逻辑回归的一个非常好的基础。
分类问题为什么不能用线性回归?
线性回归产生[- ∞到+ ∞ ]之间的连续值作为预测问题的输出。因此,如果我们定义了一个阈值,那么我们可以说,在阈值之上它属于一个类别,在阈值之下,它是另一个类别,这样,我们可以直观地说,我们可以使用线性回归来解决分类问题。然而,故事并没有到此结束。问题出现了,如何设置阈值,添加新记录不会改变阈值怎么办?我们通过查看最佳拟合线和添加新记录集来计算阈值,最佳拟合线会发生变化,从而进一步改变阈值。因此,我们不能肯定地说,一个特定的记录属于哪一类,因为我们没有一个确定的阈值。而这也是我们不能直接用线性回归来解决分类问题的主要原因。
下图用一个例子描述了整个概念。
如果我们扩展线性回归的概念,将输出[- ∞到+ ∞]的连续值的范围限制为[0 到 1],并有一个函数计算属于特定类的概率[0 到 1],那么我们的工作就完成了。幸运的是,s 形或逻辑功能为我们完成了这项工作。因此,我们也说逻辑回归是使用 Sigmoid 函数的线性回归的变换。
Sigmoid 函数
一个S 形函数是一个数学函数,它有一个特征“S”形曲线或S 形曲线。通常, Sigmoid 函数是指第一张图中所示的逻辑函数的特例,由公式定义(来源:维基百科):
所以 Sigmoid 函数给出了我们进入 1 类或 0 类的概率。因此,通常我们将阈值取为 0.5,并且如果 p >.5,则它属于类 1,并且如果 p <.5 then=“” it=“” belongs=“” to=“” class=“” however=“” this=“” is=“” not=“” a=“” fixed=“” threshold.=“” varies=“” based=“” on=“” the=“” business=“” problem.=“” and=“” what=“” threshold=“” value=“” should=“” be=“” we=“” can=“” decide=“” with=“” help=“” of=“” aic=“” roc=“” curves.=“” which=“” i=“” will=“” explaining=“” later=“” in=“” post=“” target=“” mostly=“” how=“” logistic=“” regression=“” works.=“”/>
How Logistic Regression works:
As I have already written above that logistic regression uses Sigmoid function to transform linear regression into the logit function. Logit is nothing but the log of Odds. And then using the log of Odds it calculates the required probability. So let’s understand first what is the log of Odds.
Log of Odds:
The odds ratio is obtained by the probability of an event occurring divided by the probability that it will not occur. and taking the log of Odds ratio will give the log of Odds. So what is the significance log of Odds here?
Logistic function or Sigmoid function can be transformed into an Odds ratio:
Let’s do some examples to understand probability and odds:
- odds s = p/q, p is prob of winning, q is prob of losing that is 1-p. then if s is given then prob of winning p = numerator/(numerator + denominator) and prob of losing q = denominator/(numerator + denominator). Now let’s solve some examples.
- If the probability of winning is 5/10 then what are the odds of winning? p = 5/10, => q = 1-p => q = 5/10,则 s = p/q => s = 1:1
- 如果赢的赔率是 13:2,赢的概率是多少?中奖概率 p =分子/(分子+分母)=> p = 13/(13+2) = 13/15。
- 如果赢的赔率是 3:8,那么输的概率是多少?丢失 q 的概率=分母/(分子+分母)=> q = 8/(3+8) => q = 8/11
- 如果输 q 的概率是 6/8,那么赢的几率是多少?s= p/q,(1-q)/q => s = 2/6 或 1/3。
逻辑模型
在下面的信息图表中,我解释了逻辑模型的完整工作过程。
这里还要注意的一点是,逻辑回归使用最大似然估计(MLE ),而不是线性模型中使用的最小化误差的最小二乘法。
最小二乘法与最大似然估计
在线性回归中,我们最小化 SSE。
在逻辑回归中,我们取而代之的是最大化对数似然。这背后的主要原因是 SSE 不是凸函数,因此找到单个最小值并不容易,可能有多个最小值。然而,对数似然是一个凸函数,因此找到最佳参数更容易。最佳值可以是最大值或最小值,在对数似然的情况下,它是最大值。
现在让我们了解对数似然函数对于目标变量的两个类别 1 和 0 是如何表现的。
情况 1: 当实际目标类别为 1 时,我们希望预测的目标 y hat 值接近 1。让我们理解对数似然函数是如何实现这一点的。
放 y_i =1 会使方程的第二部分(在+之后)为 0,只剩下 ln(y_i hat)。y_i 在 0 到 1 之间。ln(1)为 0,ln(小于 1)将小于 0 表示负。因此,对数似然的最大值将是 0,并且只有当 y_i 接近 1 时才是这样。因此,最大化对数似然相当于获得一个接近 1 的 y_i hat,这意味着它将清楚地将预测目标识别为 1,这与实际目标相同。
情况 2: 当实际目标类为 0 时,我们希望预测目标 y hat 接近 0。让我们再次理解,在这种情况下,最大化对数似然将产生更接近于 0 的 y_i hat。
设 y_i = 0 将使方程的第一部分(在+号之前)为 0,只剩下(1-y_i)ln(1-y_i hat)。1-y_i 将再次为 1,因为 y_i 为 0,因此在进一步简化后,等式将保持为 ln(1-y _ I hat)。所以现在 1-y_i hat 将小于 1,因为 y _ I hat 将在 0 到 1 之间。所以 ln(1 — y_i hat)的最大值可以是 0。意味着 1-y_i hat 应该接近 1,这意味着 y _ I hat 应该接近 0。这是意料之中的,因为实际值 y_i 也是 0。
这就是我们最大化对数似然的原因。
这就是逻辑回归的全部内容。在下一篇文章中,我将解释一个使用 python 的逻辑回归的完整例子。
视频解释:
希望它已经让你很好地理解了逻辑回归背后的概念。请在下面的评论区分享你的想法。另外,你可以订阅我的 youtube 频道:科技隧道
谢谢大家!
关于回归的推荐文章:
原载于 2019 年 6 月 17 日http://ashutoshtripathi.com。
那么什么是机器学习呢?
我相信现在你一定听说过这个术语,如果不惊讶,看看苹果或谷歌的演示就知道了;甚至麦当劳也在做一些的事情。事实上,不仅仅是他们,如果你看一下谷歌趋势页面的机器学习,你会注意到随着时间的推移,受欢迎程度和兴趣呈上升趋势。所以每个人都在谈论它…
你可以很容易地找到许多机器学习的流行用例。我敢肯定,当你需要购买新衣服或鞋子时,你会在亚马逊上查询。然后你会看到一张*为你推荐的商品清单。*事实上,这是机器学习在发挥作用。你可能也听说过正在测试的自动驾驶汽车,或者你可能与聊天机器人互动过。几乎所有其他品牌都在重新思考他们的战略,让机器学习参与进来,并以这样或那样的方式利用它的巨大力量。
但是什么是机器学习呢?
我将从汤姆·米切尔给出的一个流行定义开始:
如果一个计算机程序在 T 中的任务上的性能,如 P 所测量的,随着经验 E 的增加而提高,那么就说该计算机程序从关于某类任务 T 和性能测量 P 的经验 E 中学习。
wait, what? | Photo by Emily Morter on Unsplash
如果你没有明白,不要担心,即使我一开始也没有完全明白。它本质上说的是,假设你有很多很多的数据,通过机器学习,你可以发现隐藏在数据中的模式,计算机程序可以学习这些模式。这个被转化为机器学习模型的计算机程序,当面对新的数据时,现在可以以一定的信心识别该模式是否可以在这里找到。
基本上发生的事情是,当你建立一个机器学习模型时,你用大量历史数据训练该模型,该模型与你试图解决的问题具有相同的上下文。某些模式由模型学习,有助于识别、识别或预测。例如,你可以建立一个机器学习模型来识别图像中的实体,如猫或狗;或者,在给定一些参数(如房间数量、房屋面积等)的情况下,使用机器学习模型来预测房屋的价格。但是,只有使用正确的数据对模型进行适当的训练,才能实现这一切。
在我们继续之前,让我们先来看两个重要的概念。
分类
分类是将每一件物品归入特定类别的过程。例如,识别图像中的一只猫意味着将图像中的对象分类为一只猫。简而言之,给任何事物贴上标签就叫做分类。
在机器学习场景中,分类问题的数据会有很多参数,称为特征,用于需要分类的实体和标签。在这种情况下,模式将是这些特征,它们一起将我们引向标签类。
回归
回归问题与变量的相互依赖性有关。有自变量和因变量,顾名思义,因变量的值取决于自变量。通常,这些值都是数值,也就是连续的,它们是通过选择特定的数学函数得到的。因此,预测某样东西的价值,比如说房子或汽车的价格,甚至是股票价值,都属于回归问题。这里的模式是自变量的值导致因变量的值。
回来,我们一直在谈论的这种模式可以以两种不同的方式出现,要么在数据中明确提到,在这种情况下有一个标签或依赖值,要么隐藏在需要找出的数据中。基本上,机器学习大致分为两种类型:
- 监督学习
- 无监督学习
监督学习
监督学习指的是对包含标签的数据进行处理的那类机器学习算法。比方说,你想找出某个图像是否包含一个苹果。因此,您将使用包含苹果的图像和不包含苹果的图像来训练您的机器学习模型。当面对新的数据时,你的模型会很有信心地告诉你新的图像是否包含苹果。一个很好的例子就是当你想做任何分类任务的时候,比如前面提到的物体检测问题。或者一个回归任务,我们将某种形式的输入(由值组成)映射到一个函数来预测一个连续值。所以在这种情况下,我们已经知道了输出应该是什么样子,知道了输入和目标变量之间的关系。
无监督学习
无监督学习指的是在没有提供任何标签的情况下,在数据中寻找模式的一类机器学习算法。因此,你向你的机器学习模型提供大量数据,该模型根据它自己的模式、结构和数据点中的连接来计算。无监督学习的一个有趣且最常见的应用是自动数据聚类,比如在构建客户细分模型时部署的应用,或者谷歌用来将相似的新闻文章聚集在一起的应用。
在这篇文章中,我想简单介绍一下机器学习及其广泛的分类。还有许多其他类别的机器学习技术,如强化学习、关联挖掘或异常检测,都非常有趣,绝对值得一试!
如果你想看到更多这样的文章,请前往数据科学门户网站
大家好,欢迎来到数据科学门户。这个空间致力于学习和理解所有令人兴奋的…
thedatascienceportal.com](https://thedatascienceportal.com/)
感谢阅读!
什么是机器学习:崩溃
一本有用的指南,下次有人问你“什么是机器学习”时会让你大吃一惊。
Prefer to listen to your articles? Press the play button above!
你有没有问过或者被问过一个非常著名的问题“什么是机器学习”?你可能会陷入一个兔子洞,里面有你从未真正回答过的其他问题。你的定位定义变成了 Tom Mitchell 的定义:“如果一个计算机程序在某类任务 T 和性能度量 P 中的任务性能(由 P 度量)随着经验 E 的增加而提高,那么这个程序就可以说是在从经验 E 中学习。这个定义让你有点困惑,但是如果你记住了它,你会觉得很聪明。你会发现它基本上意味着一种算法,它有学习的能力,而不需要通过经验明确编程。
我们将从什么是机器学习这个问题中回答一些在对话中经常出现的问题。
它是怎么来的?
拟人化或把人类的特征或行为归因于非人类物体。人类有这种惊人的自我意识能力。我们知道我们在生活,我们试图寻找生命的意义,我们看着一个出口,看到一张惊讶的脸在看着我们。当我们发现自己的思想时,我们对自己知识的缺乏不断推动我们走向人工智能。
我们一直在努力寻找比我们更强大、可能比我们更好的东西。自 18 世纪初以来,一台体现我们是谁的机器就一直在人们的脑海中。文学作品,如《格列佛游记】,谈到了与我们现代计算机密切相关的全知机器。
第一台计算机 和编码器
在 19 世纪早期,计算机之父查尔斯·巴贝奇创造了一种能进行数学计算的机器,称为差分机或分析机。并非巧合的是,他是第一位计算机程序员阿达·洛芙莱斯的朋友。她发表了一篇文章,解释如何扩展巴贝奇的差异引擎。这篇文章描述了包括字母和符号的代码,而不仅仅是数字。
Ada Lovelace (left) and Charles Babbage (right)
第二次世界大战
快进到 20 世纪初。二战期间传输的加密信息很容易被敌人截获。德国人使用“谜”码,这被证明很难破译。艾伦·图灵和他的团队用一种叫做炸弹机的设备破解了它。艾伦·图灵是英国数学家、计算机科学家、逻辑学家、密码分析学家、哲学家和理论生物学家。他为机器学习奠定了基础。机器可以理解人类,但人类自己不能完全理解数据。
庞贝机器启发了艾伦·图灵的测试,人们亲切地称之为图灵测试。这个测试是在图灵 1950 年的论文“计算机械和智能”中介绍的,本质上是一个模仿游戏。简而言之,它涉及两个人和一台机器。一个人在一堵墙后面,与机器和其他人没有接触。孤独的人通过电子方式向机器和人提问。如果询问者不能区分人和机器,机器就被认为是“智能的”。
艾夏
20 世纪 50 年代是大量人工智能研究的时代。Ferranti Mark 1 是一台机器,它只是通过使用它的算法来玩跳棋。人工智能之父约翰·麦卡锡开发了可以用符号计算的 LISP 程序语言。人工智能是在麦卡锡组织的达特茅斯会议上创造的。
艾冬
然后在 20 世纪 60 年代,取得了雄心勃勃的进展。这引发了一场 AI 寒冬。该技术无法计算应用程序所需的大数据。研究开始停止,计算机硬件的工作开始了。
互联网与现代进步
在 20 世纪 90 年代初,互联网被发布,随着计算机能力的增强,对人工智能的研究可以再次开始。网络泡沫中的数据被储存起来,这些数据被用来与计算机一起工作,寻找用户的模式。
2011 年——IBM Watson 击败了两次 Jeopardy!冠军和 Siri 发布。
2015 年——deep mind alpha Go 在围棋上击败了一名人类棋手
2016 年——汉森机器人公司(Hanson Robotics)索菲亚(Sophia)发布,拥有展现人类表情、视觉和交流的能力。她是第一个机器人公民。
2017 年——脸书人工智能研究实验室创造了两个聊天机器人来相互交谈,它们最终创造了自己的语言。
2019-自动驾驶汽车和转移学习的进步
为什么这么重要?
能够像人一样思考和说话的计算机是如此重要的原因!一旦我们充分利用了机器的能力,我们作为一个物种将会取得巨大的进步。量子计算机正在向我们走来,有了这种不可思议的技术,我们将迈向终点。最终是让我们和机器人一起工作,还是上传成为机器人,只有时间能告诉我们。
机器学习可以用来做什么?
在未来,人类能做的任何事情。可能减去悲伤、快乐、爱情等情绪。它将能够识别和模仿情绪,但它可能无法体验潘多拉的盒子。它将能够做出准确的医疗诊断,比人类更好地驾驶汽车,并在没有人类的情况下创造和经营企业。
在现在,主要是模式识别。该算法被赋予大量的数据进行分类,并找出是否有任何相关性。计算机视觉就是在图像中寻找模式,并疯狂地发展。面部识别、驾驶汽车和预测某人是否会摔倒都是为了找到图像像素内的模式。
它是如何学习的?
现在,它通过在给定的数据中寻找模式来学习,也通过奖励来学习。在大数据中寻找模式是它如何确定新输入(无论是图像还是一些文本)将被分类的。通过奖励来帮助一个算法学习是耗时的,并且充满了试错。基本上,大脑会通过在一个环境中移动来学习,并根据它的行为触发一套奖励系统。如果它做了一件好事,它会得到积极的回报,而做了一件坏事,它会得到消极的回报。是的,你可以过度惩罚它,以至于它甚至不会动,因为它想要积极的回报。
If you look closely, you will see that it is made up of numbers.
有哪些职业侧重于此?
许多职业道路侧重于机器学习和人工智能。目前它主要是在研究中,但随着研究的公开,它将需要实施。下面是一个快速列表:
- 数据科学家
- 机器学习工程师
- 商业智能开发人员
- 大数据工程师/架构师
- 机器学习、人工智能、NLP(自然语言处理)或深度学习的研究科学家
- 深度学习工程师
- 计算机视觉工程师
- 软件开发人员
职称实际上只是工作要求的表面。基本上任何职位的人都可以做。如果你在这个领域找工作,一定要看看任何一个技术类的工作,因为机器学习可能就藏在它的描述里。
我该怎么学?
学习人工智能可以通过互联网进行。使用 MOOCs(大规模开放在线课程),如果你投入时间,你可以在一个月内学会机器学习的基础知识。这并不容易,但如果你坚持不懈,你会看到一些回报。
我有一个帖子可以帮助回答这个问题:学习机器学习的 5 个简单步骤。在帖子中,有你可以使用的书籍和课程,以及我推荐你采取的步骤,这样你就不会变得不知所措。
以下是一些被证明是有益的其他来源:
有一些免费的机器学习课程,但它们免费是有原因的。我发现免费课程漏洞百出,而且不如付费课程相关。在他们被释放后,创作者(许多,但不是全部)倾向于将他们抛在身后,专注于他们的付费课程。如果你预算有限,吴恩达的机器学习课程是免费的,没有证书和评分。优达城的课程大减价,大约 10 美元。如果你手头拮据,一定要检查一下。爱看书?你当地的图书馆可能有你感兴趣的书。
如果你有工作,和你的上司谈谈,看他们是否愿意支付你的部分教育费用。你可能会感到惊讶。他们可能会说是。
机器学习的未来是怎样的?
不可阻挡。神经网络将会出现在手机上,更深层次的个性化将会出现,医疗保健系统将会被破坏。机器学习将彻底改变我们的生活和行为方式。我们将拥有增强视力的眼镜,这样我们就可以拥有超过 20/20 的视力,汽车将检测我们何时沮丧或快乐,并成为我们的朋友,人类医生将从处理患者的日常医疗需求过渡到支持晚期病例。
量子计算将在其增长中发挥重要作用。政府和公司在这方面投入了数百万美元。在现代硬件上几乎不可能解决的算法在量子计算机上只需几分之一秒就能解决。这些算法的准确性和速度将在医疗保健领域最引人注目。即使是训练有素的专家也很难确定患者是否患有癌症,是恶性还是良性,或者处于哪个阶段。随着机器学习与量子计算相结合,它将变得快速而准确,因此患者将能够快速获得他们需要的药物。
仅仅是炒作吗?
不,不是的。深度学习早已从机器学习进化而来。随着研究的继续,算法和模型将继续进步。人工通用智能是目标。不管这让你感到恐惧还是兴奋,根据当前的技术趋势,它预计将在下一个 50 年内出现。
据预测,一个人工智能的冬天即将来临。在那段时间里,关于人工智能和人工智能的讨论将逐渐平息,但研究(有资助和无资助)仍将继续。尽管流行的“炒作”会逐渐消失,但它所产生的影响将会持续并增长。现在需要对它进行讨论和宣传,以便建立一个伦理研究和发展的基础。
神经网络真的是答案吗?
它们只是答案的一部分。除了神经网络,还有许多不同的模型。有随机森林、线性/逻辑回归、支持向量机、朴素贝叶斯、k-最近邻等等。神经网络是在计算机中模拟人类神经元的一个飞跃。这可能也不会是最后一次飞跃。随着量子计算机的出现,我相信会有另一种突破性的算法产生。
所以…
什么是机器学习?
一种无需明确编程即可学习的算法。这可以通过模式识别或奖励系统来实现。我们将看到机器学习在医疗保健领域的巨大影响,从患者互动到药物发现。这不仅仅是炒作,这是改变生活,甚至可能改变物种。一旦量子计算到来,这个领域的进展很可能会有巨大的飞跃。
在我们重新学习之前,
什么是自然语言处理(NLP)?狭隘的解释
NLP 一直被认为是一种神奇的灵丹妙药或数字巴别塔,并且有许多相互矛盾的想法。我甚至看到数据科学家争论是否只有特定的机器学习算法才算 NLP,或者是否真的是方法使它成为 NLP。因此,我在这里简单解释一下它的含义。
Photo by Mark Rasmuson on Unsplash
那么什么是 NLP 呢?
自然语言处理(NLP)有着非常有趣的历史,它本身也是一门非常古老的学科,在更复杂的方法实现之前,一些最早的例子是手写的规则。我经常被问到的一个问题是“什么是 NLP?”我认为答案取决于你想让它做什么。NLP 通常被分解成不同的需求,我在这里找到了一个很好的列表七种不同的用途:
- 文本分类—例如垃圾邮件过滤
- 语言建模—例如拼写检查
- 语音识别——将我们的口头语音分解成文本格式,然后可以被其他算法接受
- 标题生成—描述图片的内容
- 机器翻译——将一种语言转换成另一种语言
- 文档汇总—文档的抽象创建
- 问答——理解一个问题,然后给出一个人类可读的答案
令人惊讶的是,你可以为这些的不同部分使用不同的模型。例如,传统的分类问题使用支持向量机或决策树来处理文本的单词包(单词包最简单的形式是单词在一段文本中出现的频率计数,因此失去了排序和语法),但被更复杂的算法(例如深度学习)慢慢取代, 但实际上这取决于手头的任务,对于简单的问题,一个单词包方法和一个 SVM 可以在更短的时间内比一个复杂的单词嵌入(每个单词的向量,包含上下文信息和与其他单词的关联)构建的数据集做得更好,这个数据集被输入到一个专门的神经网络中。
NLP 不是一项简单的任务,只是试图分解和理解人类语言的复杂性,而是关于理解我们如何说话,它可以完成任务,有时会给人留下它像人类一样理解你所说的话的印象。我这么说是因为机器永远不会像我们一样理解我们的语言,一个很好的例子是,当脸书试图让聊天机器人相互交流时,他们迅速将英语语言改变到人们不再理解的水平(但他们似乎理解)。
NLP 算法可能会遇到的另一个问题是多义性(同一个词有多种含义,英语中的 40% 估计就是这样)、同音异义词(听起来相同但拼写不同的词)、同形异义词(拼写相同但不同的词)等问题,这些问题导致模型为其特定的目标领域进行训练(尽管正在努力处理这个)。
这样的单词或句子的例子有(许多摘自这里是):
- 对于语义分析,在工程师报告中,单词“点火”在木材(坏)和锅炉行业(好)中有不同的含义
- 对于多义词来说,动词“get”可以表示根据上下文变成或理解
- 谐音:“爬下梯子”或者“买了羽绒被”。拼写和发音相同但不同的东西
- 同形词:“轴”。如果是砍木头的斧头的复数或者是一个图形的轴的复数
所以总的来说,NLP 是很难的,而且还涵盖了大量围绕使用人类语言的各种各样的问题。所以下次 Alexa 或 Siri 出错时,只要想想它试图做什么就行了。
一个轻松有趣的事实是,任何想要通过图灵测试的人工智能都需要 NLP(因为它需要产生与人类书面文本无法区分的对话文本)。
什么是 Neuralink:看看它是什么,它想要成为什么,以及它可能成为什么
向你的第六感问好
Can’t read right now? You can listen to the podcast of this episode.
当我第一次在小学上科学课时,我们学习了五种感官。也许在不久的将来,这些信息可能会像太阳系九大行星(抱歉,是冥王星)一样过时。这可能要感谢 Neuralink 公司,该公司因其有争议的大脑芯片接口而成为头条新闻。2019 年 7 月 17 日,该公司终于在 YouTube 直播流中揭开了它的辛勤工作。
当你第一次听到它时,Neuralink 的追求听起来像是直接来自一个疯狂的天才的日记;当然,在埃隆·马斯克执掌公司的情况下,这一形象可能并不遥远。但是,如果你看起来超越了科幻恐怖电影,你可以瞥见一个完全不同的人类未来——一个拥有新的第六感:神经链接的未来。
Neuralink Prototypes: the company has gone through years of research prior to its public announcement (Source: Neuralink Launch Event on YouTube)
Neuralink 现在是什么?
Neuralink 是一种首先用于帮助截瘫患者完成简单任务的设备,如使用 iPhone 和在计算机上点击鼠标——无需身体运动。明确一点,人体试验还没有开始;Elon Musk 和他的团队对 2020 年底开始持乐观态度,但他们认为 FDA 的批准并不容易。据 Musk 称,迄今为止,Neuralink 原型已经在啮齿动物身上进行了测试,显然甚至在一只猴子身上进行了测试。
大脑中的那部分
Neuralink 确实包括通过手术将一些组件植入你的大脑表面。但是大脑植入并不新鲜——自从 20 世纪 70 年代以来,研究和开发一直在进行,测试和使用。只是以前,大脑植入不被认为是增强;毕竟,我们的大脑仍然是一个大谜团,我们只是最近才开始解码我们智力的遗传起源。
理想情况下,我们希望保持这个神圣房间的神圣性——我相信埃隆·马斯克(以及他的团队)也希望如此。不过,在这一点上,这是不可能的。他们通过使用电极进行测试来实现这一点,电极是用于检测电场的设备(在大脑中,当神经相互发送信息时就会产生电场——即 Neuralink 使用电极来检测神经何时相互发送信息)。
其中一个电极(我们称之为 1 号电极)被放置在神经元的正上方。因为它直接在神经元上,它将能够检测到由于神经元放电而产生的任何电场。然后,他们将另一个电极(我们称之为电极 2)放在更远的地方,看看它是否仍然可以检测到神经元放电产生的电场。如果可以,他们将它移动得越来越远,直到电极 2 不再能够检测到神经元的电信号——在这一点上,电极 1 将报告神经元正在放电,但电极 2 将无法确认它。换句话说,电极 2 离神经元太远了。这个距离是 60 纳米。不用深入研究,事实是 60 纳米意味着它必须在头骨内部,而不是外部。
至少,电极需要位于头骨下面。这正是他们要做的。电极和一个小接收器将被安装在头骨下面。不,你不会有一根天线从你的头上伸出来,不,杆子不会刺穿你的大脑。
N1 Sensor, the first version of the human-embedded chip (Source: Neuralink Launch Event on YouTube) without the outer mold. The mold is a cylindrical 8mm diameter, 4mm tall. Each has 1,204 electrodes.
伸出你的食指,试着想象芯片放在上面。现在你意识到它有多小了——它肯定比我现在耳朵里的 AirPods 小,后者在我的大脑陷入交叉火力的情况下来回发射信号。它将被放置的圆柱形外壳直径为 8 毫米,高 4 毫米。
从外壳中出来的将是 1024 个看起来像细丝的微小电极。当我说微小时,我们看到的是大约 6 纳米的直径。为了比较,想象一下你头发的直径,然后用这个直径除以 10。它是如此之小,以至于相对来说像人手那么大的东西都无法将其安装到大脑上。这就是为什么 Neuralink 也创造了一个机器人外科医生。
The robotic surgeon that places Neuralink N1 electrodes into the brain (Source: Neuralink Launch Event on YouTube)
这个机器人有能力做出必要的精确动作,将螺纹安装到你的大脑中。这听起来像是一个简单的任务,但在线程的小范围内,它变成了一个与太空火箭安全返回地球一样复杂的任务——马斯克太熟悉了。
这些东西真的非常非常小。你真的不能用手操纵它们。机器人一次剥下一根线,放入大脑…所以我们必须制造一个手术机器人…没有机器人手术是不可能的。
- Max Hodak,Neuralink 的总裁
这是因为,在那个尺度上,还有其他因素需要考虑;比如呼吸和心跳。两者都是非自愿的。当然,一个没有完全镇静的人可以在长达一小时的过程中屏住呼吸,但他或她能屏住心跳吗?我想没有人会推荐这个。
你可能想知道戳大脑是否会导致剧烈的头痛。答案是否定的,首先大脑没有任何痛觉感受器,所以你不会有任何的感觉。其次,电极这么细。如果头发的类比不够直观,可以这样想:这些电极比蚊子的长鼻(当它想吸你的血时伸出的长针)还要细——它嘴巴的内部,阴唇,直径约为 40 纳米(相比之下,电极的直径为 6 纳米)。你上一次感觉到蚊子咬你是什么时候?
Take a look at the Neuralink surgical robot in action (Source: Neuralink Launch Event on YouTube)
Neuralink 手术机器人在确定放置每个电极的正确区域时会考虑这些变量,从而将触及血管的可能性降至最低——这对大脑不好。在上图中(你可以点击 source 链接,直接进入直播流中播放该视频的位置),顶部的两段视频显示了一个模拟大脑的运动,其中有心跳和呼吸等变量,而左下角的一段视频显示了机器人在考虑这些变量后看到的东西——一个看似静止的大脑。
大脑之外的部分
将仿生超级大脑芯片自动植入你的大脑是我们大多数人都会认为一生只有一次的经历。马斯克和他的团队希望保持这种状态。软件更新已经很不方便了,总是在我们不希望的时候发生。每当软件想要运行更新时,都必须去一趟当地的神经外科医生那里,这种想法让我们对拥有超级大脑可能带来的吸引力有所了解。因此,一大块 Neuralink 驻留在头骨外部,作为耳朵后面的可穿戴设备。
The Neuralink wearable named the Link (source)
这款可穿戴设备名为 Link,内置软件和电池。这样,当你只有 5%的电池续航时间时,你可以直接移除设备进行充电。软件更新也是如此,处理发生在链路上。
Neuralink 想成为什么
它希望成为每个人大脑中的一台电脑——一台我们不必随身携带的电脑,并且在使用时不会被察觉的电脑。尽管埃隆·马斯克(Elon Musk)可能喜欢帮助截瘫患者的想法,但似乎没有什么比给我们未来的人工智能霸主腰带以下一脚更让他挠痒痒的了。他相信 Neuralink 会给你致命一击。
在[不可测量的]未来,他将 Neuralink 的大脑芯片视为选择性手术。这意味着它在美国不在保险范围内。抱歉,最后一句话是对美国医疗保健这个笑话的不着边际的讽刺挖苦。严肃地说,这意味着人们想要它,而不是需要它。它可能会比整形手术在世界范围内变得更加普遍(也许贝弗利山是个例外)。
【Neuralink】不是强制的东西。这是你想拥有就可以选择拥有的东西。我认为这在文明层面上非常重要。
-埃隆·马斯克
有趣的是,马斯克说 Neuralink 不会是强制性的,尽管如果你周围的每个人都有一个量子计算机速度的大脑,如果你想竞争那时人类可能仍然存在的任何工作,你自己可能也需要一个。在 Neuralink 的帮助下,约翰·康纳——呃,我是说,马斯克,相信我们有机会对抗不可避免的天网。
Neuralink 可以成为什么
嗯,从资本主义的角度来看,比苹果或任何其他现有的科技巨头都大(可能除了亚马逊,因为否则我们会用我们的思想去哪里购物?).当你脑子里已经有了这一切的时候,你为什么还需要 iPhone 或者 Apple Watch(实际上,你现在甚至还需要 Apple Watch…)!Neuralink 的成功将改变未来创新的轨迹。曾经看起来非常创新但仍然遥不可及的东西(例如,增强现实眼镜)现在在想象 Neuralink 的未来时似乎有点过时。
但是 Neuralink 可以远远超越增强现实的新奇事物太空入侵者。例如,心灵感应不再那么牵强。毕竟,电极接收的信号可以无线传输到电子设备,而 Link 耳机本身就是一个电子设备。将信息从一个链接设备传输到另一个链接设备类似于在 iPhones 之间空投图像。再加上一点量子纠缠,也许我们可以给我们的火星家庭打一些心灵感应电话。在这个时候,Neuralink 的技术可能无法从你的神经元中的小放电中创建完整的句子,但它可以被训练成将某些放电模式翻译成图像。或者单个单词。这种类型的功能可以随着时间的推移而改进。
交流的速度也会提高。现在,当我打字时,我交流的速度被限制在我的手指优雅地穿过 QWERTY 星球的速度之内。当我用手机的时候,我的拇指能织多快。即使我在说话,我也只能在舌头打结之前说得很快。但是思想是瞬间的。Neuralink 最终可能能够捕捉那些即时的想法,并将其转录为即时通信,速度比我说出的话还要快。
另一个更前卫的用途可能是作为药物的替代品——让我们从更容易接受的娱乐性药物开始吧。你不需要再喝咖啡、抽烟或喝酒来达到它们的效果。这些业务可能最终会成为行业的坟墓,被售价 0.99 美元(考虑到通货膨胀,可能为 50 美元)的应用程序版本所取代。其他的,更不合法的,也可能以数字方式被滥用。这种潜力确实引发了关于 Neuralink 打算如何监管其软件使用的问题,包括第三方开发。然而现在,政府似乎正忙着处理脸书的天秤座,所以这是一个他们不得不在晚些时候处理的问题。
未来的担忧
谈到担忧,也有一个清单。勒索病毒(Ransomware)是一种病毒,它会锁定你电脑中的文件,并一个接一个地删除它们,直到你支付赎金(通常是比特币),这是当今计算机网络的一个严重威胁。现在想象一下你的大脑。黑客、软件漏洞和硬件缺陷可能会威胁到你的日常生活。
在不久的将来,另一个问题是 Neuralink 不仅能够读取信号,还能发出自己的信号——它本质上能够代表你的神经元工作。但是大脑是非常敏感的——它会在一生中对不同的刺激做出反应,包括化学物质和神经元如何相互交流。在等式中加入 Neuralink 可以改变我们大脑的发展方式。
Neuralink 不可否认是一个创新项目——这是埃隆·马斯克(Elon Musk)的预期。他倾向于关注未来,而不是今天存在的可感知的局限性,这引导其他人看到这项技术或类似技术的强大潜力。我非常渴望想象它将为人类智能的未来带来更多的东西。我会尝试第一版吗?在这一点上,可能不会,但我不能代表未来的我。
什么是。npy 文件以及为什么应该使用它们…
为什么你应该总是保存你的数据。npy 而不是。战斗支援车
An accurate depiction of the feeling you get when loading data from .npy files.
介绍
首先,非常感谢我的粉丝们在过去的几个月里一直支持我,我一直非常忙,没有太多的时间来写文章。我决定对此的部分补救方法是做一些更短更容易消化的文章,这样更容易产生!因此,这是我第一次尝试写一篇简短扼要的文章。
希望你觉得有用!
如果你喜欢这篇文章并想看更多,请务必 关注我的简介 !
TL;博士:
从存储器中读取一千万个数据点文件:
The results speak for themselves.
🥇第一名:。npy 文件用时:0.13 秒
这是目前最快的数据加载方法。
🥈第二名:。csv 文件用时:2.66 秒
熊猫证明了这一点。csv 文件不是没用,但还是速度不够。
🥉第三名:。txt 文件用时:9.67 秒
和其他的相比,这个太慢了,很痛苦。
为什么。npy 和 Numpy?
如果你曾经用 Python 做过任何类型的数据处理,你肯定会遇到 Numpy 和 Pandas 。这些是 Python 中数据科学的巨人,是许多其他包的基础,也就是说 Numpy 提供了像 Scikit-Learn 和 Tensorflow 所使用的基本对象!
那么,为什么我要谈论这些包,为什么特别是 Numpy 呢?你可能知道,关于数据文件的行业标准是*。csv* 文件。现在,虽然很方便,但是与其他选择相比,这些文件已经高度优化了,比如 T31。npy 文件由 Numpy 提供。
“管他呢,让我们看看代码和证据!”
好吧,继续表演!
代码
首先,我们简单地创建 1000 万个随机数据点,并将其保存为逗号分隔值:
现在,让我们通过传统方式加载,并对数据进行简单的整形:
这是我得到的输出:
Almost 10 seconds to load!
现在,您可能会认为整形会阻止更快的加载,但即使我们不做任何整形,我们也会得到类似的时间!
现在我们有了 10000 乘 1000 的数组,让我们继续将它保存为。npy 文件:
np.save('data.npy', data_array)
对,那很简单,对吧?现在我们有了数组。npy 格式让我们看看我们能以多快的速度阅读它:
这给了我以下输出:
Wow! More than 70x faster!
快得多,还要注意,我们不需要重塑数据,因为该信息包含在。npy 文件。
使用的另一个“次要”特性。npy files 是文件占用的减少的存储空间。在这种情况下,它的大小减少了 50%以上。这可以警惕很多,但一般来说。npy 文件更易于存储。
“熊猫和它们的后代怎么样?csv 处理?”
让我们来了解一下!
首先让我们创建一个合适的。csv 文件供熊猫阅读,这将是最有可能的现实生活场景。
data = pd.DataFrame(data_array)
data.to_csv('data.csv', index = None)
这只是将我们之前创建的“data_array”保存为一个标准。没有索引的 csv 文件。
现在让我们加载它,看看我们得到了什么样的时间:
这给了我以下输出:
2.66 seconds… Faster than the standard .txt read but still snails pace compared to the .npy file!
现在你可能会认为这是作弊,因为我们也在加载一个熊猫数据帧,但事实证明,如果我们像这样读取,时间损失可以忽略不计:
data_array = np.load('data.npy')
data = pd.DataFrame(data_array)
和时间,我们得到以下结果:
Almost no different from loading without a DataFrame.
外卖
您可能习惯于将数据加载和保存为。但是下次你做数据科学项目的时候,试着养成加载和保存的习惯。改为 npy 文件!当你等待内核加载你的文件的时候,它会帮你节省很多停机时间和烦恼!
结束语
我希望这篇短文对你有所帮助!
阅读彼得·尼斯特拉普在媒介上的作品。数据科学、统计和人工智能…推特:@PeterNistrup,LinkedIn…
medium.com](https://medium.com/@peter.nistrup)
什么是 OCR??
光学字符识别系统工作的基本理论概述。
Source: investintech.com
在当今时代,数字化的必要性正在迅速增加。由于信息和通信技术(ICT)的发展以及手持设备的广泛使用,人们通常更喜欢数字化内容,而不是包括书籍和报纸在内的印刷材料。此外,利用许多先进的技术,如人工智能等,可以更容易地组织数字化数据,并出于各种目的对其进行分析。因此,为了跟上当前的技术发展,有必要将目前所有印刷格式的信息转换成数字格式。
OCR 来了…我们的救世主💪 💪这有助于我们完成单调乏味的信息数字化工作。OCR 代表 光学字符识别、,其主要工作是识别图像中的印刷文本。一旦我们在 OCR 的帮助下识别出印刷文本,我们就可以用各种类型的信息。
Recognizing the text on Number Plate. Source: scholorworks
你打算学什么?
这是一个由 3 部分组成的系列文章,解释了 OCR 系统的各种概念和阶段。让我们看看你将在每一部分学到什么
- 第一部分 (本文),OCR 系统工作的高级理论概述
- part-I***I:***在 预处理阶段 执行的不同步骤以及代码示例
- part-III***😗**不同类型的 分割 可以在一张 预处理过的图像上执行。
我们走吧…
下图显示了 OCR 系统工作流程的不同阶段。
Phases of OCR. Source: Reference [4]
让我们简要讨论一下上图中显示的每个阶段:-
A. 图像采集
这包括扫描文档并将其存储为图像,在该图像上必须执行识别。
B. 预处理
我们不能直接为 OCR 系统输入图像。必须对图像进行一些预处理,以便 OCR 能够比较容易地识别图像中的信息。这就像根据场合穿上衣服一样。
图像预处理包括:
- 倾斜校正:从上一阶段获得的图像可能没有正确定向,可能以任何角度对齐。因此,我们需要执行倾斜校正,以确保转发到后续
阶段的图像方向正确。
Skew Correction. Source: pyimagesearch.com by Adrian Rosebrock
2。二值化:将彩色图像转换为二值图像(仅包含黑色&白色)。通常,在实践中,这种从彩色图像到二值图像的转换是通过中间的灰度图像来完成的。
彩色图像→灰度图像→二值图像
这可以使用不同的方法完成,如
→自适应阈值处理
→ Otsu 的二值化
→局部最大值和最小值方法
我更喜欢自适应阈值,因为它用某个阈值对图像进行二值化,这个阈值是根据它在图像中的位置动态计算的。
3.去噪:在图像采集过程中,由于相机清晰度低、图像上有阴影等各种原因,扫描图像时容易引入噪声(小点或前景成分)。
这种噪声应该被去除,以便图像将是干净和均匀的。
4.细化和骨架化:不同图像的文字笔画宽度不同。在手写单词的情况下,这种可变性非常高。骨架化是一种技术,使用这种技术我们可以使所有的笔画有一个统一的宽度(可能 1 个像素宽或几个像素宽)
(a) Original Image. (b) Converted to Grayscale. ©Binarized image. (d) Thinning and Skeletonization are done. (e) Noise Removed. Source: Reference [3]
C. 分割
一旦一幅 干净的 图像被获得,在预处理阶段之后,下一个阶段就是 分割 。这是一种将整个图像分解成子部分以进一步处理它们的技术。
OCR 中可以做三种类型的 切分:-
→行级切分
→词级切分
→字符级切分
D. 特征提取
在这一阶段,我们从上一阶段获得的分段子组件中提取一些独特特征*。有许多技术,我们可以通过它来提取特征,如形状,笔画等。
但是现在,对于特征提取,我们主要依赖于机器学习模型,该模型使用一堆 CNN、RNN(递归神经网络)、LSTM(长短期记忆)层。*
E. 分类
这是 OCR 系统的决策阶段。分类使用在特征提取阶段提取的特征来识别文本片段。像 SVM 这样的算法可以用于分类。
除了这些阶段,为了提高 OCR 的性能,我们还可以在分类阶段之后执行可选的后处理步骤。
F. 后处理
OCR 系统中最有可能出现的错误是由于分类阶段的错误预测(这可能是由于较差的特征提取、图片中的大量噪声等)。在大多数情况下,这些预测错误会导致小的拼写错误,因为错误地预测了一个单词中的一个或两个字母(就像单词“ball”被预测为“boll”)。因此,这些类型的拼写错误可以使用语言模型、Word2Vec 模型(如 CBOW 和 skip-gram)等来纠正。
哇呜……现在你知道 OCR 系统的基本工作流程了。
进一步阅读
快乐学习!!!!
欢迎任何质疑、建议、指正。😃
参考文献:
[1] P. Dhande 和 R. Kharat,“草书英文手写字符的识别”, 2017 年电子与信息学趋势国际会议(ICEI) ,Tirunelveli,2017 年,第 199–203 页,doi:10.1109/icoei . 2017.8300015 . 202005
[2]哈马德、卡雷兹和卡亚、穆罕默德。(2016).光学字符识别技术详细分析。国际应用数学、电子学和计算机杂志。4.244–244.10.18100
[3] Choudhary,Amit & Rishi,Rahul & Savita,Ahlawat。(2013).一种新的脱机手写草书字符分割方法。计算机科学。17.88–95.10.1016 年 5 月 13 日
[4]布里德、优素福和苏哈尔、阿卜杜勒哈尼和埃尔克塔尼、优素福。(2017).基于阿拉伯语的特异性和独特性的手写字符识别。国际交互式多媒体和人工智能杂志。4.45–53.10.9781/伊吉迈 2017.446
《随机森林》中的“出袋”(OOB)分数是多少?
本博客试图解释 oob_score 在“Scikit learn”框架中的“【RandomForestClassifier】”设置为 true 时的内部功能。这篇博客描述了随机森林中 OOB 分数背后的直觉,它是如何计算的,以及它在哪里有用。
在需要模型良好可解释性的应用中,DTs 工作得非常好,尤其是当它们深度很小时。但是,具有真实数据集的 DTs 可能有很大的深度。深度较高的 DTs 更容易过度拟合,从而导致模型中的方差较高。随机森林模型探讨了 DT 的这一缺点。在随机森林模型中,原始训练数据是随机替换采样生成的小数据子集(见下图)。这些子集也称为引导样本。然后,这些引导样本将作为训练数据提供给许多深度较大的 DTs。这些 DTs 中的每一个都在这些引导样本上被单独训练。这种 DTs 的集合称为随机森林集合。集合模型的结论结果是通过对来自所有 DTs 的多数投票进行计数来确定的。这个概念被称为 Bagging 或 Bootstrap 聚合。由于每个 DT 采用不同的训练数据集作为输入,因此原始训练数据集中的偏差不会影响从 DT 聚合中获得的最终结果。因此,bagging 作为一个概念减少了方差,而不改变整个系综的偏差。
Generation of bootstrap samples with replacement. “Sampling-with-replacement” here means that if a data point is chosen in the first random draw it still remains in the original sample for choosing in another random draw that may follow with an equal probability. This can be seen in the image above as “Dog” is chosen twice in the second bootstrap sample.
随机森林里的出袋分是多少?
袋外(OOB)评分是验证随机森林模型的一种方式。下面是一个简单的直觉,它是如何计算的,然后描述它如何不同于验证分数,以及它在哪里是有利的。
为了描述 OOB 分数计算,让我们假设在从 1 到 5 标记的随机森林集合中有五个 dt。为简单起见,假设我们有一个简单的原始训练数据集如下。
假设第一个引导样本由该数据集的前三行组成,如下图绿色框所示。该引导样本将被用作 DT“1”的训练数据。
然后,原始数据中“遗漏”的最后一行(见下图中的红框)被称为袋外样本。此行将不会用作 DT 1 的培训数据。请注意,实际上会有几行这样的行被遗漏,这里为了简单起见,只显示了一行。
在对 DTs 模型进行训练之后,这个剩余的行或 OOB 样本将作为看不见的数据提供给 DT 1。DT 1 将预测这一行的结果。设 DT 1 正确预测这一行为“是”。类似地,这一行将被传递给所有在其引导训练数据中不包含这一行的 DTs。让我们假设除了 DT 1 之外,DT 3 和 DT 5 在它们的引导训练数据中也没有这一行。下表总结了 DT 1,3,5 对此行的预测。
我们看到,通过 2“是”对 1“否”的多数票,这一行的预测是“是”。注意,通过多数投票,该行的最终预测是正确预测,因为该行的“打网球”栏中最初也是“是”。
类似地,OOB 样本行中的每一行都通过在其引导训练数据中不包含 OOB 样本行的每个 DT,并且为每一行记录多数预测。
最后,OOB 得分计算为**,即袋外样本中正确预测的行数。**
OOB 分数和验证分数有什么区别?
既然我们已经了解了 OOB 分数是如何估算的,让我们试着理解它与验证分数有什么不同。
与验证分数相比,OOB 分数是根据不一定用于模型分析的数据计算的。而对于计算验证分数,在训练模型之前,实际上留出了原始训练数据集的一部分。此外,仅使用不包含其引导训练数据集中的 OOB 样本的 dt 的子集来计算 OOB 分数。而验证分数是使用集合的所有 dt 来计算的。
OOB 评分能派上什么用场?
如上所述,只有 DTs 的子集用于确定 OOB 分数。这导致装袋中总聚集效应的降低。因此,总的来说,对一个完整的 DTs 集合进行验证比用一个 DT 子集来估计分数要好。然而,有时数据集不够大,因此留出一部分用于验证是负担不起的。因此,在我们没有大型数据集,并希望将其全部用作训练数据集的情况下,OOB 分数提供了一个很好的权衡。然而,应该注意的是,验证分数和 OOB 分数是不同的,以不同的方式计算,因此不应该进行比较。
在理想情况下,总训练数据的大约 36.8 %形成 OOB 样本。这可以显示如下。
如果训练数据集中有 N 行。那么,在随机抽取中没有选中一行的概率是
使用替换抽样,在随机抽取中不选取 N 行的概率为
其在大 N 的极限下变得等于
因此,总训练数据的大约 36.8 %可用作每个 DT 的 OOB 样本,因此它可用于评估或验证随机森林模型。
概率是什么?
理解概率的解释
Photo by Jonathan Petersson on Unsplash
介绍
从很小的时候起,我们就被教导概率——通常是通过使用简单的例子,如掷硬币或掷骰子。
然而,概率的实际定义是什么?对于像上面这样的基本例子,这似乎是显而易见的;然而,对于许多其他情况,它是模糊的。
例如,我们如何确定只发生一次的事件的概率?或者,我们如何确定涉及一组(可能是无限的)考虑因素的事件的概率,例如一个给定的人发生车祸的概率?除此之外,我们的个人信仰和经历如何影响概率?
在概率哲学领域的历史上,已经产生了各种各样的解释。每种方法都以不同的方式解决上述问题。在本文中,我将讨论概率的四种常见解释:古典、频率主义者、主观、公理化。
经典的
经典解释是第一次严格定义概率的尝试。它是在简单的概率游戏的背景下发展起来的,比如掷硬币或掷骰子,它关注的是有着同样可能的、互斥的结果的事件。其主要思想是无差别原理,该原理指出,如果存在 N 个互斥且集体穷尽的可能结果,那么任何一个个体结果的概率都应该是 1 / N 。所以,对于一个事件 A 对应于可能结果的 N_A ,那么**P(A)=**N _ A/N。
优势
这种方法在概念上很简单,对于简单的实际例子很有用。对于没有数学或统计学背景的人来说,这是迄今为止最容易理解并应用于基本现实世界示例的方法。
限制
这种解释的简单性在几个方面限制了它。它不能处理具有无限可能结果的事件。它也不能处理各种结果不尽相同的事件,比如投掷一个有重量的骰子。这些限制使它不适用于更复杂的任务。
频率论者
接下来是频率主义者的解释,这是目前统计学中最常用的解释。频率主义者的方法关注的是一个事件在大量试验后发生的频率。形式上,如果 N_A 是事件 A 在 N 试验中出现的次数,那么当 N 接近无穷大时,比率 N_A / N 等于 P(A) 。
https://lotharlorraine.wordpress.com/2014/01/10/knowledge-dependent-frequentist-probabilities/
优势
这种方法解决了传统方法的一些问题。频率主义方法能够处理结果不尽相同的情况,因为它只关注事件的发生。这种方法也能够处理不涉及单一结果的概率。例如,如果事件是“一个随机选择的正整数是偶数”,即使没有感兴趣的特定结果(因为有无穷多个整数),事件的概率仍然可以通过采样越来越多的整数来确定。随着我们采样越来越多的数字,概率会接近 1/2。
限制
尽管这种方法改进了传统方法,但它仍然有一些限制。
【无限次】重复 无限次重复一个实验的概念是一个思想实验,而不是实际可以做的事情。我们可以进行大量的试验,但是当然,永远不会有无限的试验。因此,当我们试图估计概率时,所获得的量不会收敛,而是围绕事件的“真实”概率振荡。如果不循环使用概率,很难量化这种程度的不确定性。
另外,频率主义者的方法没有明确的方法来处理只会发生一次的事件。并非所有概率都与可重复试验中发生的事件有关。例如,如果事件关系到一只股票明天的开盘价,就没有办法获得一个以上的样本。
主观的
主观解释采取了与前两种不同的方法。主观方法不是关注频率或计数,而是假设概率来源于一个人对特定事件将会发生的个人(主观)相信程度,基于他们可获得的所有相关信息。这种观点与贝叶斯统计一致,贝叶斯统计描述了随着信息的增多,人们如何调整自己的信念。
https://www.investopedia.com/terms/s/subjective_probability.asp
优势
这改进了先前的解释,因为它允许我们创建任何事件的概率。显然,一个人能够对任何事件有一定程度的信任,不管它发生的频率如何或者相关的结果是什么。在这种情况下,主观方法可以包括其他方法,因为在相关情况下,没有什么特别的原因可以解释为什么我们的个人信仰不能与频率主义者或古典方法保持一致。例如,即使在主观解释下,大多数人仍然相信掷硬币有 50%的机会正面朝上,因为没有证据表明硬币的任何一面更有可能。
限制
即使这种方法允许我们产生任何事件的概率,围绕这些概率的有效性和它们的有用性仍然存在问题。
参考类问题 由于概率是个人的相信程度,每个人对不同事件的概率可能不同。这可能是由于个人观点和/或不同信息的可用性。这个问题涉及到引用类问题,它指的是确定某个事件的相关在先事件是什么的任务。例如,如果我们想确定某个特定的人在 2019 年发生车祸的概率,我们需要从一些相关类别的人开始。不同的人会提出不同的引用类。你可以使用一个宽泛的词,比如“美国的所有司机”,或者你可以使用一个非常具体的词,比如“该州这个城市的所有司机在这个时间驾驶那种类型的车……”。基于您决定使用的引用类,您将有不同的概率。这与贝叶斯统计中选择先验概率的任务直接相关。
连贯性
接下来,为了让这些主观概率有用,它们必须是连贯的。为了一致,它们必须满足基本的概率定律。比如,即使在我们的主观信念中, P(A) 一定是 ≤ P(A 或 B) 。这可以通过荷兰书的论证来更好的理解。在赌博中,荷兰式赌注是一组赔率和潜在的结果,庄家保证从中获利。有人认为,为了不被赌注登记经纪人“荷兰预订”,一个理性的代理人的个人信仰程度必须是一致的。
https://en.wikipedia.org/wiki/Dutch_book
不管这个论点如何,已经有许多研究表明人们的个人信仰并不一致。比如合取谬误已经被多次实验观察到,其中人们认为 P(A) < P(A 和 B) 。在阿莫斯·特沃斯基和丹尼尔·卡内曼的作品《T4》中,他们创造了著名的琳达问题。
显然,基于概率的公理,答案是 a。然而,通过实验,大多数参与者选择了 B 。我们的大脑在决策过程中使用的各种启发式方法导致参与者犯了这个错误,因为他们将社会正义的描述与积极参与女权运动的属性联系起来。一般来说,人们往往很容易陷入这些谬误。因此,在许多情况下,主观概率可能实际上是不一致的,尽管荷兰书中的例子提出了这样的观点。
公理的
最终的“解释”是统一以上三者的要求。它将相干性的定义转化为明确的数学形式。由于主观概率需要一致性,并且主观概率可以包含频率主义者和经典解释,公理化方法是包罗万象的。
这种解释由 3 个概率公理组成:
- 对于任何事件 E,0 ≤ P(E) ≤ 1。
- “某个事件发生”的概率是 1。至少必须发生一个事件。
- 互斥事件联合的概率是单个事件概率的总和。
这些公理可以用来推导许多其他事实。通过这些公理,我们可以发展一种不受主观解释影响的概率理论。
什么是关键的证据和用心参与的 6 种方式
区块链系列的未来
对区块链来说,密钥证明并不是一种新的共识算法;相反,这只是一个事件,人们同时将他们所有的加密货币从集中交易所中取出。该活动的主要目标之一是确保交易所拥有他们声称拥有的资金。毕竟,如果他们不这样做,那么就不能保证你真的拥有你在交易所购买的硬币。因此,如果这已经是一个问题,至少它迟早会被曝光。
听起来熟悉吗?因为它应该。本质上是银行挤兑。在我之前的文章货币的历史中,我描述了什么是银行挤兑——最著名的银行挤兑事件之一发生在大萧条时期,当时公民试图尽快从银行提款,因为他们担心银行没有足够的钱返还给每个人,尽管银行声称他们有。然后,好吧,大萧条发生了,所以…让我们希望历史不会重演(开玩笑,大萧条不仅仅是由银行挤兑引起的——相关性不等于因果关系!).
钥匙证据的核辐射
2019 年 1 月 3 日的密钥证明活动(该活动将于 1 月 3 日举行,以庆祝第一个被开采的比特币区块 10 周年)将是一次银行挤兑,除非是在集中式加密货币交易所而不是银行。我指定集中式是因为分散式交换不代表用户持有任何资产;相反,用户保持对其资金的控制。
关于 HitBTC 这样的交易所据称会在活动开始前冻结客户账户的传言已经风起云涌。这些传言未经证实,但当然像约翰·迈克菲(John McAfee)这样的名人,加密货币的唐纳德·特朗普(Donald Trump),喜欢引发阴谋,而不是要求事实,这导致真相和倾向之间的模糊。
尽管 McAfee 和我在思维方式上存在差异,但他认为交易所可能厌倦了密钥证明事件,这并没有错。交易所不喜欢它的原因显而易见。
首先,它可以显著减少交易的资产量。交易所想要交易量,因为它给了人们更多交易的机会——进行更多交易意味着从交易中赚取更多费用。例如,如果我想以 3700 美元的价格购买比特币,我去了一家交易所,但看到唯一的报价是 4000 美元,因为每个报价在 3700 美元到 4000 美元之间的人都撤回了他们的硬币,那么我可能不会交易。
此外,交易所可能不会再看到这些资金。毕竟,如果用户想再次交易,是什么迫使他们将资金移回同一个交易所?像币安这样的交易所拥有大多数交易者感兴趣的大部分硬币,所以用户可能看不出将它们移回一个较小的交易所有什么意义。因此,交易所的交易量将再次下降。如果你不认为低交易量是太大的问题,那么我会说你只是没有感受到为一笔交易等待两天的痛苦。这肯定会影响用户体验,促使人们转向其他交易所。
我如何参与(以一种聪明的方式)?
如果您想要提取您的加密货币并成为第一个密钥证明事件的一部分(目的是在未来拥有更多),您需要的只是您自己的钱包地址。这是您拥有私钥的钱包地址。但一定要采取一些预防措施,以便更有效地参与活动,而不损害您的身份或您的资金安全。以下是一些建议:
1.考虑使用临时地址
如果您打算在某个时候将它移回交易所,请考虑使用临时地址。交易所跟踪与账户相关联的地址;因此,通过将您的所有资金提取到一个个人地址,您可能会将该地址与您的身份相关联。如果你想保持你的地址匿名,那么就不要从交流中退出。
2.不要使用你认为有问题的钥匙
绝对确保您的私钥没有被泄露。例如,如果你把你的私钥保存在微软 Word 文档或谷歌文档中(不要这样做,这是一个不要用你的私钥做什么的例子),那么它很可能不是很安全,很容易被一个简单的病毒找到。钥匙证明是一个事件,将是一个有机会进入外国钱包的黑客的金矿,所以你要绝对肯定你的钱包的私钥没有被泄露。不幸的是,没有简单的方法可以知道。
3.确保使用正确的区块链地址
确保你输入了正确的钱包地址。这在比特币和以太坊之间不是什么问题,因为格式不同。但许多原本存在于以太坊上的替代硬币已经推出了自己的区块链,它们起源于以太坊的叉子;因此,它们具有相同的钱包地址格式。例如,VeChain 使用以太坊地址格式。如果你在提取 VeChain 时不小心粘贴了你的以太坊地址,那么就和你的 VeChain 令牌说再见吧,除非你在以太坊上拥有相同的地址。
4.区块链网络拥塞的因素
请记住网络拥塞。区块链在这一点上不完全是可扩展的,如果活动在参与方面是成功的,那么这也将是 altcoin 网络可扩展性的一个伟大实验。但话虽如此,有一种可能性是,你的资金甚至可能不会到达你的个人钱包,直到活动结束。在传输过程中,不要惊慌,只需使用交易 ID 进行检查,以确保它会到达正确的目的地址,即您的目的地址。
5.提款限额因素
还要记住交易所拥挤/取款限额。在很多交易所,如果你的账户没有经过验证(或者在某一级别的验证),你的提款可能会受到限制。设置这一路障是为了遵守某些监管法律,如反洗钱(AML)。此外,交易所本身可能无法一次处理大量的取款请求。就像网络拥塞预防措施(第 4 条)一样,当他们找到你时,事件可能已经结束了。
6.不要动你输不起的东西
考虑到第 4 点和第 5 点,你还应该考虑定价风险。例如,如果在你的资金在钱包地址之间转换时价格下跌,那么你将无法出售你的资产,直到你可以再次将它们放回交易所。如果你不能承担这个风险,那么你应该权衡它的可能性,决定这个事件是否适合你。
“钥匙证明”事件最终对用户来说是善意的,因为它意味着确保您真正能够访问所有承诺您可以访问的资产。如果用户开始发现他们没有,那么这将暴露出该领域一个更大的问题,并可能促使对集中交易所进行更多监管。如果你决定参加,请记住本文中提到的要点,以便从活动中获得更好的体验。
什么是二次投票?
二次投票是一种集体决策的方法,参与者不仅投票支持或反对某个问题,还表达他们对该问题的强烈感受。它有助于保护那些深切关注特定问题的选民小团体的利益。二次投票可用于民主制度、公司治理和区块链式的集体决策。
为什么是‘二次’?
在二次投票中,每个参与者都被给予一定数量的信用点数,这些信用点数可用于对某个问题进行投票。然而,为一个问题投一票以上的成本是二次的,而不是线性的。所以,每增加一票的边际成本都远远高于前一票。
下面是二次投票公式:投票人的成本=(votes)^2 的数量
想象一下,对一个问题的投票通常花费 1 美元,而你有 100 美元的投票信用。你想为保护濒危物种投票。投一票将花费你 1 美元。然而,为同一问题投两票将花费您 4 美元,为同一问题投三票将花费您 9 美元,为同一问题投 10 票将花费您全部 100 美元的信用。
因此,当你每多投一票就增加了你的议题获胜的机会时,投票的二次性质确保了只有那些深切关心议题的人才会多投他们一票。
在科罗拉多州使用
在民主党于 2018 年赢得科罗拉多州州长和该州两院后,他们使用二次投票来决定首先资助哪些拨款法案。由于立法者可能会提出自己的法案并投票支持,民主党核心小组寻求一种方法来衡量哪些法案得到了所有人的支持。
最初,科罗拉多州民主党人给每位议员分配了 15 个代币,用于他们喜欢的 15 张钞票上。在这种方法不奏效后,他们与微软经济学家 Glen Weyl 进行了交谈,他解释了二次投票如何提供一种解决方案。
Weyl 认为二次投票是解决“多数暴政”问题的一个办法。常规投票假设每个人都平等地关心一个问题,但事实很少如此。现实情况是,一些立法者不关心某些问题,适度关心其他问题,深切关心少数问题。
因此,每个立法者都得到了 100 枚代币。如果一个立法者对几个问题各投一票,那么他们每个人就要花费一个代币。然而,立法者可以对一个问题投一票以上,其代币费用如下:
科罗拉多州的二次投票实验基本上是成功的。
二次投票和传统的投票系统有什么不同?
***😗**在大多数民主国家采用的“得票最多者当选”制度中,候选人不需要获得大多数人的选票就可以获胜。假设候选人 A 获得 35%的选票,B 获得 30%,C 获得 24%,D 获得 11%。a 赢了,但是我们知道大多数人投票给了 a 以外的人。
比例投票 : 为了解决这个问题,一些司法管辖区采用了比例投票制。在这里,如果 35%的选民投票给某个政党,那么立法机构中 35%的席位将给予该政党,以此类推。虽然这些系统可以被看作是“得票最多者当选”系统的“进化”版本,但当必须做出二元(是或否)决定时,它们就不起作用了。
排名选择投票 : 在排名选择投票(加州多个辖区都在使用)中,每个投票人都会对自己喜欢的候选人进行排名。每轮投票中得票最低的候选人将被淘汰,该候选人的选票将在下一轮投票之前重新分配给下一位候选人。尽管排序选择投票有其优势,但它是一个复杂且耗时的系统。
二次投票 : 尽管二次投票也很复杂,但它可以说更好地保护了那些深切关注特定问题的小投票群体的利益。通过增加每一张额外选票的成本,它抑制了那些不关心问题的选民投他们几票的积极性。它还允许选民通过投几票来显示他们对某个特定问题的支持程度——以牺牲他们对其他问题的投票能力为代价。
结论
现代民主国家在选举和立法过程中普遍实行一人一票。公司通常采用更复杂的投票机制(例如,允许股东指定其他人代表他们投票)。复杂但更民主的投票系统,如比例投票和排序选择投票,由于其复杂性,还没有被广泛接受。
现在,区块链支持的集体决策允许以透明、公开的方式跟踪投票,因此可以采用更复杂的投票系统。通过允许选民不仅表达他们的偏好,而且表达这些偏好的强度,二次投票保护了深深关心某些问题的小选民群体的利益。
—
关注兰萨尔研究公司的媒体,了解最新的新兴技术和新的商业模式。
数据到底是关于什么的?
Photo by Helloquence on Unsplash
数据科学基本思想
现在大部分文章都倾向于表现出很多执行力,一点探索。就像 Conor Deway 在他的文章上写的:
与工程师、设计师和项目经理不同,数据科学家是探索优先,而不是执行优先。
此外,考虑到数据科学的历史,这是相当公平的。
一点数据科学历史
数据科学始于“从数据挖掘到数据库中的知识发现”的数据挖掘[1],用于发现数据中有用的知识。然后在 2001 年,威利安·s·克里夫兰试图将可用的计算能力与数据挖掘结合起来以改进统计分析,开始使用“数据科学”术语[2]。今天,数据科学涵盖了很多领域,包括数据工程师、数据分析、机器学习工程师等等。此外,最近数据科学被称为“21 世纪最性感的工作”。
数据科学家的主要工具当然是数据。然而,几乎每个人都从 Kaggle 获得一些数据,运行一个复杂的模型,如 CNN 和 BOOM。我们有了一位新的数据科学家。在不了解背景以及如何正确理解数据和模型的情况下使用所有这些花哨的工具是浪费时间,或者说对于学习如何使用这些技术来说是恰到好处的。
数据到底是关于什么的?
这打开了一个窗口,让我们在数据问题上更进一步。数据是什么?是关于制作复杂模型的吗?很酷的可视化?写代码?统计分析?特征工程?
数据不是关于机器学习、可视化、统计和争论的。
数据关乎理解。了解问题,以及如何使用数据和您选择的任何工具或技术来解决问题。
理解问题。了解数据。其余的将会流动。
数据科学家的目标不是制造一个好的模型
如果有问题,数据科学家会尝试用机器学习来解决。我们怎么知道他是否成功了?答案可能是使用正确的指标,对吗?然而,我们必须深入挖掘。真正的衡量标准不是精度、召回率和所有这些统计指标。
关键指标是影响力。
作为数据科学家,我们必须利用我们的数据对我们的公司产生尽可能大的影响。这种影响可以是多方面的。这两个是看到影响的一些基本形式。
- 洞察力:提取有用的知识来指导你的项目开发,提供方向。例如,通过对房地产市场数据的探索性分析,您发现大约 80%的买家是男性。然而,他们的妻子最终选择了房子里的大部分东西。该信息有利于将广告导向正确的人。
- 数据产品:开发利用数据提供某种回报(通常是金钱)的产品。例如,可以预测糖尿病人的葡萄糖水平的产品。有了它,这个人就可以利用这些知识在正确的时间进食和使用胰岛素。
我可以使用什么工具来产生影响?
任何,没人在乎。
确定使用哪种技术最重要的是理解数据。那就让数据来说说它是怎么运作的。数据科学家需要知道如何将数据拟合到模型中,而不是将模型拟合到数据中(效果更好的模型)。Rachel Tatman 有一个很好的关于“那么你应该使用什么方法呢?”,她用他的一句话结束了她的演讲:
如果它是愚蠢的,但它是有效的,它就不是愚蠢的。
这意味着,如果我们的模型是简单明了的(就像 90 年代手工建立的规则),并且仍然运行良好,那么它一点也不愚蠢。
然后,让我们想象我构建了一个可以产生巨大影响的应用程序。怎么卖?例如,您正在处理来自您公司的数据集,并且您发现了一个没有人看到的模式。如何呈现给你的团队?
数据叙事
作为数据、叙述和视觉的结合,数据叙事是每个数据科学家在不久的将来都需要的热门新技能之一。
对于需要向他人解释他或她的思路的数据科学家或数据分析师来说,数据故事是一项基本技术,无论他们是否具备技术知识。在那一刻,你的沟通技巧将非常重要。毕竟,没有人喜欢看到一个蹩脚的演示文稿或阅读一篇令人讨厌的文字,对吗?
简而言之,数据故事是解释你做了什么,你是如何做的,以及你为什么这样做的行为,这一切都是为了让你的读者或听众参与进来。
人们听到的是统计数据,感受的却是故事。( 【福布斯】 )
数据故事的目标是讲述你的数据的故事。它是人类对数据的理解。将数据拟人化为生活场景,让别人感同身受地理解数据,而不仅仅是统计。它可能涉及三个关键要素的组合:数据、视觉和叙事。
当叙述与数据相结合时,它有助于向你的观众解释数据中发生了什么,以及为什么某个特定的见解很重要。要深刻理解一部作品,通常需要大量的上下文和注释。当视觉应用于数据时,它们可以启发观众的洞察力,如果没有图表或图形他们是看不到的。如果没有数据可视化的帮助,数据中许多有趣的模式和异常值将隐藏在数据表的行和列中。
Source: Forbes
最后,当叙事和视觉融合时,它们可以吸引甚至娱乐观众。毫无疑问,我们每年在电影上花费数十亿美元,让自己沉浸在不同的生活、世界和冒险中。当您将正确的视觉效果和叙述与正确的数据相结合时,您就有了一个可以影响和推动变化的数据故事。
大多数情况下,你必须使用叙事、视觉和数据来简化复杂的事物。用它来让每个人理解一个模糊的观点,并思考,“我以前怎么没有看到这一点?”。
更好地讲述数据故事的技巧
已经有一些关于数据讲故事技巧的文章和故事。其中一些如下:
“人们听到的是统计数据,感受的却是故事。”福布斯,2016 年 3 月
towardsdatascience.com](/10-ways-to-take-your-boss-on-a-journey-through-the-data-14a3fdbb3503) [## 掌握数据叙事:创建有说服力的图表的 5 个步骤
数据讲故事是那些“时髦词汇”中的一个,实际上并不是真正的时髦词汇——它反映了一种必要的…
www.crazyegg.com](https://www.crazyegg.com/blog/data-storytelling-5-steps-charts/) [## 更好地讲述数据的 10 个技巧
作者比尔·山德。
medium.com](https://medium.com/@Infogram/10-tips-for-better-data-storytelling-3808d823bde3) [## 来自数百年数据可视化的 7 个数据故事技巧
尽管信息图的复兴引发了它的复兴,但数据可视化并不是什么新鲜事。对于数百个…
www.columnfivemedia.com](https://www.columnfivemedia.com/7-data-storytelling-tips-from-centuries-old-data-visualization)
我想在这里补充最后一点。我相信是最重要的一条。
阅读,很多。
阅读对于理解我们社会的功能和历史至关重要。通过发现新事物来发展我们的思维是至关重要的。此外,当我们谈论想象力和好奇心时,阅读是一个至关重要的方面。
你读得越多,你就越能理解你所读的主题。现在将它与数据科学联系起来,数据就是一切。读者可以更快地学习他所阅读的任何东西的概念。这可以让数据有意义,让数字有必要的背景,这样数字就可以变成想法和见解。
你读得越多,你知道的东西就越多。你学得越多,你去的地方就越多。-苏斯博士
参考
[1]法耶兹,乌萨马,格雷戈里 Piatetsky-夏皮罗,和帕德拉克史密斯。"从数据挖掘到数据库中的知识发现."艾杂志 17,第 3 期(1996):37–37。
[2]William s . Cleveland,“数据科学:扩大统计领域技术领域的行动计划”《国际统计评论》 69,第 1 期(2001 年):第 21–26 页。
执行与探索及其对您的意义
towardsdatascience.com](/data-scientists-are-thinkers-a36cc186d570)
什么是老师逼?
训练递归神经网络的常用技术
Photo by Jerry Wang on Unsplash
大量的递归神经网络在自然语言处理(例如在图像字幕、机器翻译中)在训练过程中使用教师强制。尽管老师逼盛行,但大部分文章只是简单描述了它是如何运作的。比如 TensorFlow 关于神经机器翻译的教程关注只说“老师强制是将目标词作为下一个输入传递给解码器的技术。”在这篇文章中,我们将回顾一下老师强迫的细节,并回答一些常见的问题。
教师强制是如何起作用的?
你是否遇到过由多个部分组成的数学考试题,其中(b)部分的计算需要(a)部分的答案,而©部分需要(b)部分的答案,等等?我总是格外关注这些问题,因为如果我们(a)部分出错,那么所有后续部分也很可能出错,即使公式和计算是正确的。老师强迫补救如下:在我们获得(a)部分的答案后,老师会将我们的答案与正确答案进行比较,记录(a)部分的分数,并告诉我们正确答案,以便我们可以用它来做(b)部分。
输出序列的递归神经网络的情况非常相似。假设我们想要训练一个图像标题模型,上面图像的真实标题是“两个人在看书”。我们的模型在预测第二个单词时出错,我们在第一个和第二个预测中分别有“Two”和“birds”。
- 如果没有老师的强迫,我们会把“鸟”送回我们的 RNN 去预测第三个单词。假设第三个预测是“飞行”。尽管我们的模型预测“飞行”是有意义的,因为输入是“鸟”,但这与地面事实不同。
- 另一方面,如果我们使用教师强制,我们将在计算并记录第二次预测的损失后,为第三次预测将“人”喂给我们的 RNN。
教师强制的利弊
优点:
用老师逼训练收敛更快。在训练的早期阶段,模型的预测非常糟糕。如果我们不使用老师强制,模型的隐藏状态会被一系列错误预测更新,误差会累积,模型很难从中学习。
缺点:
在推断过程中,由于通常没有实际情况可用,RNN 模型需要将自己之前的预测反馈给自己,以便进行下一次预测。因此,训练和推理之间存在差异,这可能导致模型性能差和不稳定。这在文献中被称为曝光偏差。
实现示例
- TensorFlow:注意看神经机器翻译的“训练”环节
- PyTorch:参见 NLP 的“训练模型”环节从无到有:从序列到序列网络的翻译和注意力
常见问题
问:既然我们通过 RNN 模型传递整个基本事实序列,那么该模型有可能通过简单地记忆基本事实来“作弊”吗?
答:没有。在时间步 t 时,模型的输入是时间步 t - 1 的地面真值,模型的隐藏状态已经被时间步 1 到 t - 2 的地面真值更新。模型永远无法窥视未来。
问:有必要在每个时间步更新损失吗?
答:不。另一种方法是将所有时间步长的预测存储在一个 Python 列表中,然后一次性计算所有损失。
问:老师强制是用在自然语言处理之外吗?
答:是的。它可以用于任何输出序列的模型,例如时间序列预测。
问:老师强制是在递归神经网络之外使用的吗?
答:是的。它用于其他自回归模型,如 Transformer。
进一步阅读
- 已经发明了许多算法来减轻曝光偏差,例如预定采样 [1】和并行预定采样 [3】,教授强制 [5】,以及光束搜索 [2],[6]。
- [4]的结果表明暴露偏差可能不像假设的那样显著。
参考
- 南本吉奥、o .维尼亚尔斯、n .贾伊特利和 n .沙泽尔。递归神经网络序列预测的预定采样 (2015),NeurIPS 2015。
- R.科洛伯特、a .汉南和 g .辛纳伊夫。一种全微分波束搜索解码器 (2019),ICML 2019。
- D.杜克沃斯,a .尼拉坎坦,b .古德里奇,l .凯泽和 s .本吉奥。平行预定抽样 (2019),arXiv。
- T.何,张军,周,格拉斯。量化神经语言生成的暴露偏差 (2019),arXiv。
- A.Lamb、A. Goyal、Y. Zhang、S. Zhang、和 Y. Bengio。强迫教授:训练递归网络的新算法 (2016),NeurIPS 2016。
- 南怀斯曼和拉什。作为波束搜索优化的序列间学习 (2016),EMNLP 2016。
什么是张量框架?TensorFlow + Apache Spark
首先,什么是张量框架?
TensorFrames 是由 Apache Spark 贡献者创建的开源软件。其函数和参数的命名与 TensorFlow 框架中的相同。它是 Apache Spark 数据帧的 Apache Spark DSL(特定领域语言)包装器。它允许我们用 TensorFlow 功能操作数据帧。而且不,它是而不是 熊猫数据帧,它是基于阿帕奇 Spark 数据帧。
…但是等等,TensorFlow (TF)是什么?
TensorFlow 是一个开源软件库,用于数据流和跨一系列任务的差异化编程。它是一个符号数学库,也用于机器学习应用,如神经网络。
…还有阿帕奇 Spark?
Apache Spark 是一个开源的分布式通用集群计算框架。
关于规模的一句话
今天当我们提到规模时,我们通常会谈到两种选择;水平缩放和垂直缩放。
- 水平刻度 —添加额外的具有大致相同计算能力的机器
- 垂直比例 —为我们目前使用的机器增加更多资源。它可以是从 CPU 升级到 GPU 的处理器、更多内存(RAM)等等。
有了 TensorFrames,我们可以两者兼得,更多的处理器计算能力,更多的机器。在只有 TensorFlow 的情况下,我们通常专注于通过垂直扩展来增加更多功能,现在有了 Apache Spark 支持,我们可以同时进行垂直和水平扩展。但是,我们怎么知道我们实际上需要多少呢?要回答这个问题,我们需要了解应用程序的全部使用情况,并相应地进行规划。
对于每个变化,比如增加一台机器或从 CPU 升级到 GPU,我们都有*停机时间。*在云中,调整集群大小或增加更多计算能力只需几分钟,而在本地,我们需要添加新机器和升级机器处理器,这可能需要几天,有时甚至几个月。
因此,更灵活的解决方案是公共云。
在下图中,水平缩放是 X 轴,垂直缩放是 Y 轴。
-
- Apache Spark conf 上蒂姆·亨特演示的幻灯片
在开始函数之前,让我们了解一些重要的张量流词汇:
张量
一个静态类型的多维数组,其元素属于泛型类型。
GraphDef
Graph
或Computional Graph
是 TensorFlow 呈现计算的核心概念。当我们使用 TensorFlow 时,我们首先创建自己的Computation Graph
,并将Graph
传递给 TensorFlow。GraphDf
是Graph
的连载版。
操作
对张量执行计算的图形节点。操作是Graph
中的一个节点,它将零个或多个Tensors
(由图中的其他操作产生)作为输入,并产生零个或多个Tensor
作为输出。
身份
当我们想要在设备之间显式传输张量时(例如,从 GPU 到 CPU),使用tf.identity
。该操作将节点添加到图中,当输入和输出的设备不同时,该操作会生成一个副本。
常数
常量有以下参数,可以根据需要调整这些参数以获得所需的函数。它和变量一样,但是它的值不能改变。常数可以是:
value
:输出类型dtype
的常量值(或列表)。dtype
:结果张量的元素类型。shape
:结果张量的可选维度。name
:张量的可选名称。verify_shape
:允许验证值的形状的布尔值。
占位符
为数据分配存储空间(例如,在输入期间为图像像素数据分配存储空间)。初始值不是必需的(但可以设置,见tf.placeholder_with_default
)。相对于变量,你需要声明初始值。\
一些 Apache Spark 词汇
数据帧
这是一个分布式的数据集合,这些数据被组织成命名的列,这些列提供过滤、分组或计算集合的操作。Dataframe 数据通常分布在多台机器上。它可以在内存数据中,也可以在磁盘上。
RelationalGroupedDataset
由 groupBy 、 cube 或 rollup 创建的一组在DataFrame
上聚合的方法。
主要方法是agg
函数,它有多个变量。为了方便起见,该类还包含一些一阶统计量,如mean
、sum
。
现在我们更好地理解了术语,让我们看看功能。
功能— TensorFlow 版本 0.6.0
众所周知,Apache Spark 是一个大规模数据分析平台,与 TensorFlow 一起,我们得到了 TensorFrames,其中包含三类数据操作:
让我们来了解一下每个功能。
-1- Mapping
映射操作将列转换和/或添加到给定的数据帧中。
每个功能都通过两个 API 来访问,一个接收 Operation,另一个接收 DataFrame、GraphDef 和 ShapeDescription。
公开的 API:
映射行
def mapRows(o0: Operation, os: Operation*): DataFrame
对于用户来说,这是更常用的函数,因为没有创建 GraphDef 和 ShapeDescription 对象的直接请求。对于有经验的 TensorFlow 开发人员来说,这种方式更具可读性:
mapRows 接收两个参数 operation 和 operation*,这意味着第二个操作可以是操作的集合。随后,它将它们转换成一个序列,并将其转换成一个图形,它从图形中创建 ShapeDiscription,并将其与数据帧一起发送给一个内部函数。其中它根据图中给出的变换逐行变换分布式数据。图中的所有输入都应该用给定数据帧或常数中的一些数据填充。意思是,我们不能用 null。最后,该函数返回一个带有新模式的新数据帧,该模式将包含原始模式以及与图形输出相对应的新列。ShapeDiscription 提供了输出的形状,它在幕后用于优化和绕过内核的限制。
地图块
执行与MapRows
类似的任务,但是,因为它是针对压缩优化的,所以它在数据块中应用图形转换器,而不是逐行应用。
def mapBlocks(o0: Operation, os: Operation*): DataFrame
经常使用的函数是:
代码示例:我们创建类型为 DataFrame 的 val df ,有两行,一行包含值 1.0,第二行包含值 2.0。列名是 x。
val x 是输出占位符的声明, y 是从 CPU 到 GPU 或从机器到机器传输张量的标识,它接收 val x 作为它的值。
z 是计算函数本身。这里,df.MapBlock
functions 得到两个操作, y 和 z ,并返回一个名为 df2 的新数据帧,多了一列 z 。 z 列是输出中的 x+x. 之和,列 x 是原始值,列 y 是相同值,列 z 是图形的输出。
地图区块规划
这与MapBlock
相同,但是,它从结果数据帧中删除了原始数据帧列。这意味着输出数据帧将只包含计算出的列。
def mapBlocksTrimmed(o0: Operation, os: Operation*): DataFrame
让我们来看看:
代码示例:我们创建一个名为 df 的 DataFrame,其中两行的值分别为 3.0 和 4.0。注意我们创建了一个名为 out 的常数,值为 1.0 和 2.0,这个常数是 TensorFrame dsl 功能,模拟 TensorFlow 功能。然后我们叫df.MapBlocksTrimmed
。输出模式将只包含名为“out”的结果列,在我们的例子中,它只包含常量值 1.0 和 2.0。
重要提示在第一行代码中,我们导入 TesnorFrames dsl,并将其命名为 tf,代表 TensorFlow,我们这样做是因为这是 TesnorFlow 用户过去使用它的方式,并且我们坚持 TensorFlow 的最佳实践。
-2- Reducing
归约操作合并一对或一组行,并将它们转换成一行,然后重复相同的操作,直到剩下一行。在幕后,TensorFrames 通过首先减少每台计算机上的所有行,然后通过网络发送剩余的行来执行最后的减少,从而最大限度地减少了计算机之间的数据传输。
f(f(a, b), c) == f(a, f(b, c))
transforms 函数必须被归类为态射:它们完成的顺序并不重要。在数学术语中,给定一些函数f
和一些函数输入a
、b
、c
,以下必须成立:
通过 Christopher Scherb 映射 reduce 模式
reduce 功能 API,和其他的一样,我们每个功能有 2 个 API,接收操作的那个更直观,但是在 TensorFlow 中没有直接的 reduce rows 操作,而是有很多 reduce 操作,比如tf.math.reduce_sum
和tf.reduce_sum
。
减少行数
该功能使用 TensorFlow 操作将两行合并在一起,直到剩下一行。它接收数据图表、图形和形状描述。
def reduceRows(o0: Operation, os: Operation*): Row
用户界面:
在下一个代码示例中。我们创建一个 DataFrame,在中有一个名为的列和两行。dtype 和 x 的占位符 x1 和 x2——这是 x1 和 x2 的加法运算。reduceRows,返回一个值为 3 的行,该值为 1.0 和 2.0 之和。
减少块
与ReduceRows
的工作原理相同,但是,它是在行的向量上工作,而不是逐行工作。
def reduceBlocks(o0: Operation, os: Operation*): Row
更多使用的功能:
代码示例:这里我们创建一个包含两列的 data frame—key 2和 x 。一个占位符名为 x1 ,一个 reduce_sum 张量流操作名为 x 。reduce 功能根据 reduce_sum 以其命名的所需列返回 DataFrame 中各行的总和,即 x 。
-3- Aggregation
def aggregate(data: RelationalGroupedDataset, graph: GraphDef, shapeHints: ShapeDescription): DataFrame
聚合是 Apache Spark 和 TensorFlow 的额外操作。它不同于 TensorFlow 中的聚合功能,使用 RelationalGroupedDataset。API 功能:
Aggregate 接收一个 RelationalGroupedDataset,这是一个 Apache Spark 对象,它包装数据帧并添加聚合功能、一系列表达式和一个组类型。
聚合函数接收图形和 ShareDescriptiom。它使用分组数据的归约变换将行聚合在一起。当数据已经按键分组时,这很有用。目前,只支持数字数据。
代码示例:在这个示例中,我们有一个包含两列的 DataFrame, key 和 x 。 x1 作为占位符, x 作为名为 x 的 reduce_sum 功能。
使用 groupby 功能,我们按键对行进行分组,之后,我们用操作调用 aggregate 。我们可以在输出中看到,聚合是根据键计算的,对于值为 1 的键,我们接收 2.1 作为列 x 的值,对于值为 2 的键,我们接收 2.0 作为列 x 的值。
张量框架基本过程
在所有 TensorFrames 功能中,数据帧与计算图一起发送。DataFrame 表示分布式数据,这意味着在每台机器上都有一大块数据要经过图形操作/转换。这将发生在每台有相关数据的机器上。钨二进制格式是经过转换的实际二进制内存数据,首先转换到 Apache Spark Java 对象,然后从那里发送到 TensorFlow Jave API 进行图形计算。这都发生在 Spark worker 进程中,Spark Worker 进程可以旋转许多任务,这意味着在内存数据上同时进行各种计算。
值得注意的
- scala 的 DataFrames 目前是 T21 的一个实验版本。
- Scala DSL 只有张量流变换的一个子集。
- TensorFrames 是开源的,可以支持这里。
- Python 是 TensorFlow 支持的第一种客户端语言,目前支持大多数特性。越来越多的功能被转移到 TensorFlow 的核心(用 C++实现),并通过 C API 公开。后来通过其他语言 API,如 Java 和 JavaScript 公开。
- 有兴趣与 Keras 合作吗?查看 Elephas:使用 Keras & Spark 的分布式深度学习。
- 对公共云上的 TensorFrames 项目感兴趣?检查这个和这个。
现在你对 TensorFrames 有了更多的了解,你将如何推进它?
在 Twitter 上关注我,很乐意接受您的话题建议。
ITP 2.1 和 2.2 对你的谷歌分析数据有什么实际影响?(+免费工具)
关于 ITP 2.1 和 2.2 对谷歌分析数据的影响,已经有很多文章发表。这些文章往往停留在理论层面,解释什么是可能是的影响。今天就来点实际的吧。随着 ITP 2.1 和 2.2 的发布,你的谷歌分析数据真正发生了什么变化?让我们找出答案。
理论
谷歌分析依赖于一个 cookie,它是在你第一次访问一个网站时设置的。如果你几天后再次访问同一个网站,同一个 cookie 将确保你被识别为回头客,你的完整旅程开始绘制地图。至少只要你不删除你的 cookies,每两年留在同一个设备上至少访问一次网站。随着 ITP 2.1 的发布,最后一个条件发生了巨大的变化。
当苹果在 2019 年 3 月底发布 Safari 12.1 和 iOS 12.2 时,ITP 2.1 进入了画面。几周后,ITP 2.2 在 iOS 用户中发布。这从两个方面影响了 Google Analytics cookie:
- 谷歌分析 cookie 将在 7 天不活动后被删除(ITP 2.1)。
- 如果访问者来自跨域链接(ITP 2.2),并且只访问一个页面,谷歌分析 cookie 将在 1 天不活动后被删除。
因此,我们现在面临的 cookie 过期时间是 1 到 7 天,而不是两年!这意味着,如果回访者在过去 1 或 7 天内没有访问过您的网站,他/她将不会被识别为回访者。理论上的影响是:新用户的会话增加了,每个用户的旅程缩短了,你的收入来源渠道减少了。
当涉及到你的数据时,让我们来看看这个理论是否正确。
工具:ITP 影响计算器
不要犹豫,使用 ITP 影响计算器 来找出 ITP 2.1 和 2.2 如何影响你的谷歌分析数据。下面你会发现这个工具的输出解释。当然,你也可以不使用工具继续阅读。
您的访问者中有多少人实际上使用了 ITP 2.1 和 2.2 版本的浏览器?
首先,了解实际使用 ITP 2.1 或 2.2 浏览器的访问者数量是很重要的。只有 Safari 12.1 或更高版本具有 ITP 2.1 或 2.2。通过创建这个浏览器和版本的一个片段,你会发现你的访问者何时采用了这个新的浏览器,以及它在你的访问者中的总份额是多少。使用这种浏览器的人越多,ITP 2.1 在你的数据上留下的印记就越多。
The graph on the left shows a timeline of when your visitors have adopted Safari 12.1 (or higher). The scorecards on the right provide insight in the total share of Safari 12.1 (or higher) sessions in the past 30 days.
ITP 如何影响回头客的数量?
新访客还是回头客?这就是问题所在!在 ITP 2.1 中,新用户可能会将更多的会话归类为一个会话。这是因为在过去的 1 或 7 天内没有访问过您的网站的访问者将不再被识别。
要找出您的数据中是否存在这种情况,您可以查看“用户类型”维度,并将其分为两个部分:一部分用于 Safari 12.1 或更高版本的用户,另一部分用于使用任何其他浏览器的访问者。通常,你会发现 Safari 12.1 或更高版本的用户中新访客的数量要高得多。这两者之间的差异有助于了解 ITP 2.1 对数据集中数据的影响。
The pie charts indicate how the amount of new and returning users may have changed. In this example: with ITP 2.1, only 30% can be recognized as a returning user. Among other users, 48% can be recognized as a returning user. This is a difference of no less than 18%
你的访客的旅程长度发生了什么变化?
Google Analytics 用“会话计数”这个维度来跟踪某人访问你的网站的次数。在 ITP 2.1 和 2.2 中,预计无法识别返回用户。结果:它们的会话计数将被重置。换句话说:我们希望会话数只有一个的用户比例更高。通过在谷歌分析或 ITP 影响力计算器中查看这个维度,你会发现与其他浏览器相比,这个差异有多大。
如果你想知道为什么 ITP 影响计算器中提供的百分比加起来不是 100%——我必须称赞你的警觉性!这有两个原因。首先,这是因为“会话计数”维度看起来比计算器中的 30 天更久远。这意味着某人在此期间可能只去过第二次。第二个原因是,这个维度是递增的:在过去的 30 天里,某人可能会有第一次、第二次和第三次访问。因此,百分比显示了在过去 30 天内,有多少用户进行了第一、第二、第三、第四或第五次会话。
The graph shows the percentage of users who with their 1st, 2nd, 3rd, 4th and/or 5th session count. With ITP 90% of the users had their first session in the last 30 days. This is was only 58% among other browsers.
这对您的营销渠道归属意味着什么?
ITP 2.1 和 2.2 对评估不同营销渠道的价值的影响可能是最大的挑战。由于可以识别的用户越少,他们的客户旅程中可以链接的接触点就越少。想象一下这个场景:有人在点击了一个脸书的广告后,第一次用最新版本的 Safari 访问你的网站;8 天后,这个人通过谷歌搜索你的品牌并下订单。在这种情况下,这种交易将只归因于(有机或付费)搜索。引发第一次接触的脸书广告的巨大作用被忽略了。
ITP 影响计算器提供了受 ITP 2.1 和 2.2 影响的收入百分比,这些收入可能归因于错误的渠道和/或不完整的客户旅程。这一估计基于(但略有不同)Paul Koks 的一篇早期文章。
救命!ITP 在很大程度上影响了我的数据,现在呢?
到目前为止,已经提出了一些(技术上具有挑战性且耗时的)解决方法。但是,正如西蒙·阿哈瓦正确指出的那样:“随着 ITP 的变通办法被发明出来,ITP 的新迭代将被引入”。已经成了猫捉老鼠的游戏。在这场游戏中,特别有趣的是,谷歌将来可能会也可能不会为 ITP 找到变通办法。
就目前而言,我认为在 ITP 问题上有两件事很重要:
- 作为分析师、在线营销人员或营销经理:要意识到 ITP 2.1 和 2.2 可能对你的数据产生的影响,以及你能从这些数据中得出什么结论。 ITP 影响计算器让您初步了解您的数据受到了多大的影响。
- 如果可能,尝试在会话范围而不是用户范围内进行分析。在谷歌分析中分析会话仍然是完全可靠的。如果你仍然想在用户层面上进行分析,考虑把 ITP 2.1 和 2.2 浏览器从你的数据集中去掉。
表数据 ML 中最好的入门模型是什么?——从一位高层卡格勒的新书中得到的教训
《赢得 KAGGLE 的数据分析技术》一书
在 Kaggle 或业务建模中开始建模的提示
Photo by Jon Tyson on Unsplash
这是另一篇文章,介绍了新书*“赢得 Kaggle 的数据分析技术”,*中介绍的技巧,作者是三位高级 kaggler(不包括我自己,因此这不是个人提升!😃 )
这本书本身的完整目录,见我的其他帖子。
在这篇文章中,我将谈论哪个模型是围绕特性和参数的首选,以及模型集成的其他选项。
拿到数据了😚!我要去做模特😄!但是等等,我能从哪里开始🙄??
在你把你的最终 ML 结果发给你的老板或 Kaggle 的排行榜或其他地方之前,你应该把这些模型和最终分数并排比较,用:
- 他们的超参数完全调整好了,
- 它们的功能被完全设计和利用,和/或
- 这些模型是成套的。
然而,在第一步, 你的问题可能是“好吧,我知道要去哪里,但是我能从哪里开始呢?🤔“玩意儿。
通过建模,普遍的看法是"特征工程最重要。“模型的改变可能也很重要,但不像特征工程那样重要;同样,超参数调整可能会影响模型性能,但对分数影响不大。
所以,我们想决定什么样的特征工程最适合我们的建模,但我们至少需要一些模型来尝试,看看我们制作的特征是否适合进一步发展。那么,这里我们说“**从哪里开始呢??**😟"
Illustration of modeling cycle
顶级卡格勒人的选择👈🏻是…
首先讲结论,在表格数据分析(记住本书的主要主题是关于表格数据 ML)中,本书建议:
- 从 GBDT 开始 (本文稍后讨论) 、
- 花费最多的时间进行特征工程(主要作者称占总时间的 80%)来查看对 GBDT 预测的影响,
- 不时检查超参数变化的影响,但还没有剧烈调整,
- 根据任务和模型的多样性,考虑神经网络和/或线性模型 (本文稍后讨论)
- 做 ensemble 时,考虑 Kaggle 常用的模型多样性的其他类型模型;kNN,随机森林,极度随机化树(ERT),正则化贪婪森林(RGF),场感知因式分解机(FFM) (本文稍后讨论) ,
- 如果新方法更适合数据和/或任务,可能会改变验证策略。
GBDT 是许多卡格勒人的首选。
对于第一个模型,我们希望它能够快速正确地运行,并成为一个基线模型。
我们不喜欢它需要太多的数据转换、功能工程或超参数调整。
我们也希望它不要花太多时间运行,因为我们将尝试许多不同的输入选项一个接一个。
GBDT 可以跳过其中的任何一个。
我们将在下一节看到更多的细节。
GBDT 是受爱戴的💖这么多,但是为什么呢?
GBDT 是基于决策树的模型。因此,模型训练中的核心行为是将节点分成两个分支。这使得 GBDT:
- 不需要可变缩放,
- 不需要缺失值插补(如果变量缺失,分割规则也决定了记录转到哪个节点)。
- 能够通过 标签编码 来处理分类变量(尽管因为 sklearn lightgbm 和 catboost APIs 及其原始包会在发现分类变量是分类变量时自动对其进行编码,但这种优势在实践中可能并不明显)
- 能够在没有明确交互变量的情况下反映变量交互(这是通过多个不同的具有交互的变量的重复分割来实现的)。
此外,这本书还提到了 GBDT 的好处:
- 良好的预测性能,
- 倾向于提供足够高的性能,而无需强烈的超参数调整,
- 拥有不必要的变量不会对模型性能造成太大的损害,并且
- 能够默认处理稀疏矩阵对象,例如
scipy.sparse
中的csr_matrix
或csc_matrix
。
使用 GBDT,我们可以设置一些默认参数,并可以围绕特征工程进行操作,直到找出下降变量,以及一些并行的超参数调整。
下表显示了书中介绍的 xgboost 的默认超级参数集。
xgboost hyper-parameter defaults introduced in the book.
调优时,一般max_depth
和min_child_weight
是最先照顾的,比如max_depth
= 3~9,min_child_weigh
= 1~5。
接下来,subsamle
,colsample_bytree(_bylevel)
,alpha
,lambda
,gamma
,像subsample
= 0.6~1.0,colsample_bytree
= 0.6~1.0,alpha
= 1e-5,1e-2,0.1,1,100,gamma
= 0.0~0.4。
有三个常用的 GBDT 图书馆:
- xgboost
- lightgbm
- catboost
在这篇文章中,我不会深究每个模型本身。我建议查看一下 t 的牛逼对比帖。
神经网络是🖖的第二选择🏻
在表数据中,广泛使用的神经网络是相当浅的,如 2 至 4 层,也是完全连接的;又名多层感知器(MLP)** 。**
NN 的属性是:
- 需要估算缺失值,
- 更好的模型训练需要缩放,
- 对超参数选择敏感,
- 非线性和可变的相互作用可以在一定程度上得到反映,
- 擅长多类分类,并且
- 使用 GPU 加速。
神经网络不像 GBDT 那样方便,它没有激烈的调整和变量转换,但仍然取决于任务,它比 GBDT 工作得更好。
有针对 MLP 的 sklearn 包装器,但是使用特定的框架在神经网络建模中也很常见。
- 克拉斯
- pytorch
- 张量流
其他型号💮
其他模型可能无法单独击败 GBDT 和 NN 的性能,但可以用于在集合中获得多样性**。**
线性模型
- 性能较低,但在数据量不足或数据有噪声时可能比其他产品更好,
- 缺少的值需要被估算,
- 需要仔细的变量变换(最小值、最大值、宁滨)和缩放,
- 需要明确地嵌入术语来表示非线性和相互作用,
kNN
随机森林
极度随机化的树【ERT】****
- 类似于随机森林,除了分裂规则的改变。
- 比随机森林更不容易过度适应。
【正规化的贪婪森林】【RGF】****
- 接近 GBDT,但使用不同的方法来制作新树和调整现有的树。
- 与推荐任务非常匹配。
- 用于“展示广告挑战赛等 Kaggle 比赛
结论👏
由于其易于处理模型设置和下降精度,GBDT 是在表数据 ML 中开始建模的第一选择。
使用 GBDT,我们可以在特征工程周围玩耍,直到找到运行良好的变量。
神经网络或线性模型可能是一种选择,取决于任务的类型,也将为集合中的模型多样性工作。
kNN,随机森林,ETR,RGF,FFM 也可以考虑模型多样性来集成。