TowardsDataScience 博客中文翻译 2022(八十四)

原文:TowardsDataScience

协议:CC BY-NC-SA 4.0

引导基础

原文:https://towardsdatascience.com/bootstrapping-basics-254db6635a76

非参数重采样,已解释

r 库要求

  • 并行:用于并行计算
  • ggplot2:用于数据可视化

一.导言

当估计感兴趣的统计量时,我们不仅对该统计量的点值感兴趣。我们还想量化我们估计的不确定性。对于感兴趣的标准量,如平均值或标准差,我们有采样分布的分析结果,或者可以很容易地使用大样本近似。很多时候,我们感兴趣的是那些我们不知道抽样分布的量,而且即使有可能,推导抽样分布也很困难。在这些情况下,bootstrap 是量化不确定性的一个有价值的工具。

在进行 bootstrapping 时,我们将样本视为总体。我们用替换样本重复重新采样与原始样本相同数量的观察值,并计算这些样本的感兴趣的统计量。我们用替换重新取样,因为在没有替换的情况下取样时,样本是不独立的。它们也将与我们的原始样本完全匹配,这将不是很有帮助。这为我们提供了一个模拟的采样分布,我们可以用它进行分析。

二。履行

虽然有像 bootstrap 这样的库为我们做引导,但我发现编写轻量级函数是一个很好的学习方法,即使我在实践中使用维护良好的库。为了演示自举,我编写了两个助手函数来支持我的主自举函数,该函数利用并行化来加速计算。

处理每个引导样本不依赖于其他样本,因为这些样本彼此独立。这使得自举很容易并行化,这就是 bootstrap_parallel 所做的。

one_bootstrap <- function(my_vec, my_func){
 ###
 # This function retrieves one bootstrapped sample and returns the   
 # statistic of interest.
 #
 # Args
 # ----
 # my_vec : numeric vector
 #   A vector of numbers of which to compute the statistic of 
 #   interest.
 # my_func : function
 #   Function which computes the statistic of interest.
 #
 # Returns
 # -------
 # double
 #   The statistic of interest computed on the bootstrapped sample.
 ###
 bootstrapped_sample <- sample(my_vec, size=length(my_vec), 
                               replace=TRUE)
 return(my_func(bootstrapped_sample))
}bootstrap_replicate_par <- function(B, my_vec, my_func){
  ###
  # This function is a helper function for the parallized 
  # bootstrapping function. It takes in a vector whose length 
  # determines the number of bootstrap samples to take, a data 
  # vector, and a function. It utilized optimized looping.
  #
  # Args
  # ----
  # B : vector
  #   A vector whose length determines of bootstrapped samples to 
  #   return.
  # my_vec : numeric vector
  #   A vector of numbers of which to compute the statistic of 
  #   interest.
  # my_func : function
  #   Function which computes the statistic of interest.
  #
  # Returns
  # -------
  # estimates : vector
  #   A vector of the estimates.
  ###
  estimates <- replicate(length(B), one_bootstrap(my_vec, my_func))
  return(estimates)
}bootstrap_parallel <- function(my_vec, my_func, B){
  ###
  # This function takes in a data vector, function, and the number 
  # of bootstrap iterations and returns a list holding the mean and 
  # standard deviation of the bootstrap estimates, as well as the 
  # vector of the bootstrap estimates. It utilizes parallel 
  # computing.
  #
  # Args
  # ----
  # my_vec : numeric vector
  #   A vector of numbers of which to compute the statistic of 
  #   interest.
  # my_func : function
  #   Function which computes the statistic of interest.
  # B : int
  #   The number of bootstrapped samples to return.
  #
  # Returns
  # -------
  # output : list
  #   A list of the mean, and standard deviation of the estimates 
  #   and a vector of the estimates.
  ###

  # Count the cores and make a cluster from leaving one core free.
  cores <- detectCores()  
  cluster <- makeCluster(cores - 1) # Create a vector that will be split up and determine the number 
  # of bootstrap samples to get on each core.
  boot_vec <- 1:B

  # Export variables and functions to the cluster.
  clusterExport(
    cluster, 
    list("boot_vec", "one_bootstrap", "bootstrap_replicate_par", 
         "my_vec", "my_func"),
    envir=environment()
    )  estimates <- parSapply(
    cluster,
    boot_vec,
    FUN=bootstrap_replicate_par,
    my_vec=my_vec,
    my_func=my_func
    ) stopCluster(cluster) output <- list(
    'mean' = mean(estimates),
    'se' = sd(estimates),
    'estimates' = estimates
    ) return(output)
}

定义好这些函数后,我们就可以开始应用这些函数了。

三。具有左尾期望值的示例

作为演示,我们将通过 bootstrap 估计的统计数据是分布左尾的期望值。为了便于参考,我将它称为 ELT(α) ,用于表示 α 处的预期左尾。这种统计有助于估计的一个例子是条件风险值

假设我们关注的是一个随机变量, X ,其分布为某种连续分布。设 f(x)X 的概率密度函数 q(α)X 在 100* α 百分位的分位数函数。那么我们感兴趣的数量如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

连续分布左尾的期望值

在现实世界的应用中,我们不知道 X 的真实底层分布。我们可以找到一个合适的分布,尽管它可能很难或不可能进行解析积分。幸运的是,我们有像 bootstrap 这样的数字工具来帮助我们。

在这个演示中,我抽取了 1000 个 X 的样本,其中**X∾T(ν)**和 ν 为 10.5。我制作了下面样本的直方图,并覆盖了真实密度函数,以衡量样本与基础数据的吻合程度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

样本相当好地符合真实分布,所以让我们计算 ELT(α)

我使用非参数方法,使用样本分位数来估计 ELT(α)ELT(α) 的非参数估计如下式所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

左尾期望值的非参数样本估计

其中 Xi 是随机变量的实现,**qˇ(α)**是 α 处的样本分位数, I 是一个指示函数,如果为真则为 1,如果为假则为 0。

在继续之前,让我们看看我们对 ELT(α) 的样本估计,其中 α 为 0.1。是-2.063。

让我们最后使用自举。我将用 10,000 次引导迭代来估计 ELT(α)。

et_est <- bootstrap_parallel(rand_sample, expected_tail, B=10000)

下面的直方图显示了 ELT(α) 的自举估计的分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的平均估计值是-2.063,与样本估计值几乎完全相同(我四舍五入到小数点后 3 位)。它的标准误差为 0.085。自举 95% CI 为-2.232 至-1.906。我们可以 95%确信 ELT(0.1) 在-2.232 到-1.906 之间。

我们已经成功地使用自举来估计一个量,并量化我们对该估计的不确定性!

我希望这已经阐明了什么是自举以及如何应用它。感谢阅读!

注:所有图片均由作者(我)生成

博鲁塔·SHAP:每个数据科学家都应该知道的特征选择工具

原文:https://towardsdatascience.com/boruta-shap-an-amazing-tool-for-feature-selection-every-data-scientist-should-know-33a5f01285c0

我们如何使用博鲁塔和 SHAP 构建一个惊人的特征选择过程——以 python 为例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

原文由诺亚纳夫Unsplash

当建立机器学习模型时,我们知道拥有太多的功能会带来一些问题,如维数灾难,此外还需要更多的内存、处理时间和功率。

在我们的特征工程管道中,我们采用特征选择技术来尝试从数据集中移除不太有用的特征。这就提出了一个问题:我们如何确定哪些特性是有用的?

对于这个任务,我们可以使用 Boruta,一个基于统计方法的特征选择算法。它依赖于两个原则:阴影特征和二项式分布。

1.阴影特征

Boruta 算法的第一步是评估特征的重要性。这通常是在基于树的算法中完成的,但在 Boruta 上,这些特征之间并不竞争,它们与被称为“阴影特征”的随机版本竞争。

假设我们有一个包含 3 个要素和 100 个观测值的数据集。在这种情况下,我们制作了数据集的副本,并混洗每个要素列。置换的特征然后被称为“阴影特征”(顺便说一下,很酷的名字),并创建一个新的数据集,Boruta 数据集,连接所有 3 个原始和 3 个新的阴影特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

现在,我们使用任何偏好方法,如随机森林或任何其他方法,来评估所有 6 个特征的特征重要性。Boruta 算法的思想是选择比纯粹的随机性表现更好的特征,这里由阴影特征表示,因此我们将原始特征的重要性与阴影特征的最高特征重要性进行比较。每当一个特征的重要性高于这个阈值时,我们就称之为“命中”。

我们现在可以只保留命中的,而丢弃其他的,对吗?但是如果他们中的一些因为运气不好而被丢弃了呢?答案在于迭代,这是下一步。

2.二项式分布

所有特征只有两种结果:“命中”或“未命中”,因此我们可以多次执行前面的步骤,并根据特征构建二项式分布。

考虑一个具有三个特征的电影数据集:“流派”、“观众 _ 评分”和“评论家 _ 评分”。经过 20 次迭代,我们可以得到以下结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以将这些结果放在二项式分布图上:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

分布的尾部是最重要的部分。在这个例子中,各占 0.5%的概率。

genre变量落在红色区域,即“拒绝”区域。在这里,我们确信这些特性对目标变量没有影响。

绿色区域是“验收”区域。我们也确信这些特征是可预测的,并且应该保留在模型中。在这个例子中,critic_score是一个应该保留的好特性。

在蓝色区域,Boruta 不确定该特征是否是预测性的。在这种情况下,我们可以保留这些特征,甚至可以使用其他方法来查看它们是否会对模型预测产生任何影响。上例中,audience__score在这个区域上,尽管它靠近绿尾。

我们保留在绿色和蓝色区域分类的特征,并丢弃红色区域的特征。

你可以点击查看博鲁塔算法的精彩解释。

3.Python 中的 Boruta

示例代码也可以在我的 github 上找到,所以可以跳过这一节。

https://github.com/vinyluis/Articles/tree/main/Boruta SHAP

要使用 Boruta,我们可以使用 BorutaPy 库[1]:

pip install boruta

然后我们可以导入糖尿病数据集(可从sci kit-Learn【2】获得):

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split# Fetches the data
dataset = load_diabetes(as_frame = True)
# Gets the independent variables
X = dataset['data']
# Gets the dependent variable (the target)
y = dataset['target']
# Splits the dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

为了使用 Boruta,我们需要定义一个估计量,它将用于估计特征的重要性。在这种情况下,我选择了 RandomForestRegressor:

from sklearn.ensemble import RandomForestRegressor# Defines the estimator used by the Boruta algorithm
estimator = RandomForestRegressor()

现在,我们可以创建 BorutaPy 对象,并使用估计器使其适合数据:

from boruta import BorutaPy# Creates the BorutaPy object
boruta = BorutaPy(estimator = estimator, n_estimators = 'auto', max_iter = 100)
# Fits Boruta
boruta.fit(np.array(X_train), np.array(y_train))

最后,我们可以发现哪些特性是重要的,哪些是不重要的,哪些是不确定的:

# Important features
important = list(X.columns[boruta.support_])
print(f"Features confirmed as important: {important}")# Tentative features
tentative = list(X.columns[boruta.support_weak_])
print(f"Unconfirmed features (tentative): {tentative}")# Unimportant features
unimportant = list(X.columns[~(boruta.support_ | boruta.support_weak_)])
print(f"Features confirmed as unimportant: {unimportant}")

输出是:

Features confirmed as important: ['bmi', 'bp', 's5', 's6']
Unconfirmed features (tentative): []
Features confirmed as unimportant: ['age', 'sex', 's1', 's2', 's3', 's4']

4.博鲁塔 SHAP 特征选择

Boruta 是一种健壮的特征选择方法,但它强烈依赖于特征重要性的计算,这可能会有偏差或对数据不够好。

这就是 SHAP 加入团队的地方。通过使用 SHAP 值作为特征选择方法,我们得到了博鲁塔 SHAP 特征选择算法。通过这种方法,我们可以得到 SHAP 方法中存在的强可加性特征解释,同时具有博鲁塔算法的鲁棒性,以确保只有重要变量保留在集合中。

如果你不知道 SHAP 是什么,看看我解释它的文章:

5.蟒蛇皮博鲁塔·SHAP

要使用 Boruta,我们可以使用 BorutaShap 库[4]:

pip install BorutaShap

首先我们需要创建一个 BorutaShap 对象。因为我们想使用 SHAP 作为特征重要性鉴别器,所以importance_measure的默认值是“shap”。当问题是分类问题时,我们可以将classification参数更改为 True。

from BorutaShap import BorutaShap# Creates a BorutaShap selector for regression
selector = BorutaShap(importance_measure = 'shap', classification = False)

然后,我们在数据或数据样本中拟合 BorutaShap 选择器。n_trials参数定义了 Boruta 算法的迭代次数,而sample布尔值决定了该方法是否会在内部对数据进行采样以加速该过程。

# Fits the selector
selector.fit(X = X_train, y = y_train, n_trials = 100, sample = False, verbose = True)
# n_trials -> number of iterations for Boruta algorithm
# sample -> samples the data so it goes faster

拟合后,将显示以下结果:

4 attributes confirmed important: ['s5', 'bp', 'bmi', 's6']
5 attributes confirmed unimportant: ['s2', 's4', 's3', 'age', 'sex']
1 tentative attributes remains: ['s1']

最后,我们可以看到哪些功能将被删除,并将其从我们的数据中删除:

# Display features to be removed
features_to_remove = selector.features_to_remove
print(features_to_remove)# Removes them
X_train_boruta_shap = X_train.drop(columns = features_to_remove)
X_test_boruta_shap = X_test.drop(columns = features_to_remove)

6.结论

与特征选择对我们的 ML 管道同样重要的是,我们需要使用最好的算法来确保最好的结果。

这种方法的缺点是评估时间,对于许多 Boruta 迭代,或者当 SHAP 适合许多观测值时,评估时间可能太长。当心时间!

考虑到这一点,博鲁塔 that 是我们可以用来选择机器学习管道上最重要特征的最佳方法之一。

始终使用它,但要记得将结果与其他方法进行比较,以确保更高的可靠性。

如果你喜欢这个帖子…

支持我一杯咖啡!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

给我买杯咖啡!

看看这个很棒的帖子

参考文献

[1 ]特别套装:https://github.com/scikit-learn-contrib/boruta_py

[2] Scikit-Learn 糖尿病数据集:https://sci kit-Learn . org/stable/modules/generated/sk Learn . datasets . load _ Diabetes . html

【3】https://shap.readthedocs.io/en/latest/index.htmlSHAP 包

[4]博鲁塔沙普包:https://github.com/Ekeany/Boruta-Shap

[5]https://medium . com/analytics-vid hya/is-this-the-best-feature-selection-algorithm-borutashap-8bc 238 aa 1677

[6]https://towardsdatascience . com/boruta-explained-the-way-I-wish-someone-explained-it-to-me-4489d 70 e 154 a

用于时间特征选择的博鲁塔·SHAP

原文:https://towardsdatascience.com/boruta-shap-for-temporal-feature-selection-96a7840c7713

特征选择算法如何应对数据漂移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Rodion Kutsaev 拍照

每个人都知道特征选择程序在机器学习流水线中的重要性。它们有助于实现更好的性能,同时根据我们的监督任务降低输入数据的维度。

过去,我们面临着最佳特征选择的问题,提出了仅过滤相关预测因子的引人入胜的尖端技术。我们发现了使用 SHAP 进行特征选择的重要性,而不是简单的算法重要性度量。我们测试了博鲁塔和 SHAP ,结果证明这是一个非常有效的选择方法。我们还介绍了递归特性添加方法,作为标准递归特性消除的一种有价值的替代方法。

很少有人知道,像大多数数据驱动算法一样,随着时间的推移,特征选择也会变得不准确。因此,需要用新数据重复过滤过程,以捕捉新模式。除了作为一个良好的实践,定期重新运行特性选择过程是每个包装器选择方法的真正需要。由于包装器方法根据基础学习者的排名选择“重要”的特征,很容易理解数据转移对最终结果的危害有多大

在本帖中,我们对一个动态系统进行特征选择。我们遵循一种迭代的方法,在这种方法中,我们重复搜索生成过程中的相关特征。我们试图预测的目标是一些正弦信号的简单线性组合的结果。预测值和目标值之间的关系在整个实验过程中保持不变。我们只增加每个预测特征中的噪声量,以观察不同的特征选择算法在数据移动的环境中如何表现。

我们着重比较两种众所周知的滤波方法:递归特征选择(RFE)和 Boruta。我们使用了 shap-hypetune 库,因为它提供了我们感兴趣的两种方法的有效和直观的实现。它还使得能够使用 SHAP 特征重要性,而不是基于树的特征重要性,以使排序过程更稳定并且更少偏向训练数据。

实验设置

我们的实验包括使用合成数据。首先,我们生成三个人工正弦序列。然后,我们合并信号,简单地将它们相加,以获得我们试图预测的目标。最后,我们按照时间模式向输入序列添加一些随机噪声。换句话说,我们从几乎为零的噪声开始,随着时间的推移不断增加。绘制数据时,此过程的结果是可以理解的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有时间噪声注入的正弦序列(图片由作者提供)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有时间噪声注入的正弦序列(图片由作者提供)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有时间噪声注入的正弦序列(图片由作者提供)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有时间噪声注入的正弦序列(图片由作者提供)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有时间噪声注入的正弦序列(图片由作者提供)

一开始,我们可以很容易地识别三个输入信号的行为。随着时间的推移,噪音开始隐藏真实的数据动态,最终使它们几乎无法识别。

连同有意义的正弦序列,我们添加一些随机特征。它们对于评估我们的特征选择策略的性能是重要的,因为它们对于我们的预测任务应该被标记为“无用的”。如果我们绘制特征和目标之间的滚动自相关图,我们可以观察到相关性是如何随着时间的推移而降低的。这并不令人惊讶,但证实了噪音对数据关系的负面影响。正如所料,噪声特征与目标的相关性几乎为零。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目标和特征之间的滚动相关性(图片由作者提供)

考虑到我们的预测任务,在这种情况下建立预测模型应该非常棘手。

结果

给定这些数据并了解底层系统动态,我们就可以对这两种提出的特性选择方法进行建模和基准测试了。我们使用标准的时间序列分割方法将数据分成 15 份。我们根据自己掌握的数据对算法进行不断扩展的滚动训练。这样,当训练数据变大时,正弦序列在每次分裂时变得更嘈杂。分裂进行得越多,我们的算法发现真实模式的压力就越大。

下面我们以热图格式报告选择结果。递归 SHAP 特征消除至少在第四次分裂之前可以检测到真正有意义的特征。之后,由于数据中噪声的增加,选择似乎变得更加困难。随机特征被错误地检测为重要,尽管它们与目标没有任何关系,这可能导致错误的预测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RFE-SHAP 在每个时间点选择(黄色)和删除(黑色)的特征(图片由作者提供)

相反,博鲁塔·SHAP 只能正确识别每次分裂中的重要信号。这是一个非常令人印象深刻的结果,它证明了博鲁塔 SHAP 作为特征选择算法在困难的预测环境中的优势。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

博鲁塔-SHAP 在每个时间点选择(黄色)和删除(黑色)的特征(图片由作者提供)

摘要

在这篇文章中,我们在数据漂移的极端环境下测试了两种不同的特征选择方法。我们对递归特征选择和 Boruta 进行了基准测试(两者都使用 SHAP 作为特征重要性度量)。虽然递归特征选择显示出随着数据中噪声的增加,在检测真正有意义的预测因子方面存在一些困难,但是 Boruta 做了出色的工作。当数据漂移变得更加明显时,它也总能检测到真实的系统模式,捍卫其首要地位*“出色的特性选择算法”*。

查看我的 GITHUB 回购

保持联系: Linkedin

时间序列的 Box-Cox 变换

原文:https://towardsdatascience.com/box-cox-transform-for-time-series-cc45f26082c6

如何使用 Box-Cox 变换创建平稳时间序列?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

克里斯托夫·比尔在 Unsplash 上的照片

介绍

使时间序列 平稳 是进行任何 时间序列 分析或预测时必不可少的一部分。平稳性确保我们的数据不会随时间发生统计变化,因此它可以更准确地模拟概率分布,从而更容易建模。

平稳性的一个要求是时间序列需要一个恒定的方差。换句话说,波动应该始终如一地在同一尺度上。实现这一点的一个方法是取序列的自然对数,然而这假设你的原始序列遵循指数趋势。因此,自然对数变换可能并不总是最佳选择。

在这篇文章中,我想介绍一下 Box-Cox 变换,它是自然对数变换的推广。Box-Cox 允许确定自然对数是否确实是最佳变换,或者某个其他的 幂变换 是否更优。

如果您想了解更多关于平稳性的背景和要求,请查阅我以前的文章:

什么是 Box-Cox 变换?

从根本上说,Box-Cox 将非正态数据转换成更像 正态分布 的数据。

现在你可能想知道为什么我们需要时间序列数据来模拟正态分布?嗯,在拟合某些模型的时候,比如【ARIMA】,他们用 最大似然估计(MLE) 来确定他们的参数。根据定义,最大似然估计必须符合某种分布,对于大多数包装来说,这是正态分布。

Box-Cox 变换由 λ 参数化(从 -55 ) 将时间序列、 y 变换为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者在 LaTeX 中创建的方程。

我们看到, λ=0 是自然对数变换,然而还有许多其他依赖于值 λ的变换。 举个例子,如果 λ=0 就是平方根变换 ,λ=1 就没有变换 λ=3 就是三次变换。

λ 通过查看哪个值最接近正态分布的变换数据来选择。幸运的是,在计算软件包中,这对于我们来说很容易做到!

Box-Cox 是一种 幂变换 的类型,因为我们总是将我们的原始系列提升到某个幂,即 λ

应用 Box-Cox 变换

让我们通过一个例子来展示如何在 Python 中使用 Box-Cox 变换。以下是 1948-1960 年间美国航空客运量的典型图表:

数据来自拥有 CC0 许可证的 Kaggle

作者代码要点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者用 Python 生成的图。

数据显然不是静态的,因为平均值和方差都随着时间的推移而增加。为了稳定方差,我们可以像上面讨论的那样使用 Box-Cox 变换。Scipy 有一个名为boxcox的函数,它可以找到 λ 的最佳值,并使用它相应地转换我们的数据:

作者代码要点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者用 Python 生成的图。

我们的方差现在是稳定的,波动在一个一致的水平上!最佳 λ 值为 0.148 ,接近完美的自然对数变换,但不完全。这表明对数变换并不总是最好的方法,通过 Box-Cox 变换可以使用更彻底的方法。

用于生成图和转换的完整代码可以在我的 GitHub 中找到:

*https://github.com/egorhowell/Medium-Articles/blob/main/Time Series/Time Series Tools/box_cox_transform.py

结论

稳定的方差是时间序列平稳性的一个要求。平稳性很重要,因为它通常是大多数预测模型所必需的。获得稳定方差的一般方法是对序列应用 Box-Cox 变换,通过 λ、 进行参数化。Python 中的变换会自动适应最佳值 λ 并相应地变换您的系列。

参考资料和进一步阅读

  • *预测:原理与实践:*https://otexts.com/fpp2/
  • 博克斯,乔治 E. P .考克斯博士(1964)。“对转变的分析”。皇家统计学会杂志,B 辑。26(2):211–252

和我联系!

(所有表情符号都是由 OpenMoji 设计的——开源的表情符号和图标项目。许可证: CC BY-SA 4.0*

打破 6 个分析习惯,释放价值

原文:https://towardsdatascience.com/breaking-6-analytics-habits-to-unlock-value-d33fec9c90ee

团队如何改进他们的数据之旅

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于许多公司来说,数据并没有兑现它的承诺(和 ROI)。因为数据之旅就像一场马拉松,商业价值和影响在最后一英里开始显现。

所谓的分析马拉松的最后一英里包括数据分析、洞察沟通和采取行动。然而,大多数公司在处理最后三个步骤之前就已经退出了竞争,结果是无法达到预期的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分析马拉松—图片来自布伦特·戴克斯

不交付价值可能会很快开始破坏数据文化,并可能导致业务团队忽视在数据马拉松的早期阶段所做的努力。想要创建强大的数据文化并在决策桌上拥有一席之地的数据从业者应该仔细评估这些习惯是否阻碍了他们的团队。

是什么阻碍了数据团队的发展?

虽然这个问题没有直接的答案,但我根据与数据和分析领导者和从业者的多次交谈,确定了六个坏的分析习惯。该列表包含导致成本高昂的决策和错失业务影响机会的主题,并与四个关键要素相关:人员、流程、工具和文化,它们是:

六个主要的坏分析习惯

  1. 像仪表板工厂一样对待数据/分析/BI 团队
  2. 仅分析一部分可用数据
  3. 全部是描述性的,没有诊断分析
  4. 等待太久才行动
  5. 陷入后续问题的循环中
  6. 未能标准化和简化洞察故事

下图总结了每个坏习惯与四个关键要素中相应的根本原因之间的关系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不良分析习惯的主要原因—作者图片

  1. 像仪表板工厂一样对待数据/分析/BI 团队

这些团队没有既定的流程或框架来构建工作流并收集上下文和信息。因此,数据团队会收到许多特别的请求,并被要求在没有适当上下文的情况下创建一个又一个仪表板。通常,他们在没有要求澄清或理解最终目标(即,企业试图实现什么)的情况下就开始分析。数据和业务团队之间的这些沟通差距导致基于假设的工作和数据分析师回答错误的问题。

问“为什么”的文化也经常缺失。

影响:关键决策中浪费的时间和延误。

怎么破:

  • 让数据团队更早地参与流程,并就预期的业务成果和可行的见解达成一致
  • 促进数据和业务团队之间的紧密协作
  • 开发流程,让人们思考为什么。
  • 考虑将您的分析师嵌入到业务团队中。

2。仅分析部分可用数据

大多数公司只分析他们收集的一小部分数据。团队通常只关注顶级驱动因素和通常的嫌疑人(即通常的切片和骰子),这导致测试非常高级的假设。还有一些数据孤岛妨碍了团队利用所有可用的数据(例如,营销团队只查看营销数据,而不将它与订单或产品数据相结合)。

影响:错失洞察力和机会。

怎么破:

  • 超越仪表盘上可用的切片和骰子,开始分析数据中所有可操作的维度
  • 通过查看多种因素的组合并利用不同类型的数据(例如,客户、产品和营销数据)进行深入分析

3。无诊断分析的所有描述

在仪表板中显示正在发生的事情可以提供信息,但不具有洞察力。只有这些变化背后的“为什么”才能推动建议和行动。然而,团队经常在每周/每月的评审中查看仪表板,并评论指标上升或下降,而没有对根本原因或可操作的见解的明确答案。

影响:缺乏行动力,错失商机

怎么破:

4。等待太久无法行动

团队花太多时间分析,以至于不能及时行动。随着业务变化的速度比以往任何时候都快,可操作性洞察的速度变得越来越重要。业务利益相关者需要快速、可行的洞察力,以便在为时已晚之前做出明智的决策。在大多数情况下,团队在同一天就需要洞察,等待几天或几周对于业务采取行动来说太长了。

影响:被动团队、错失机会、破坏数据文化

怎么破:

  • 利用技术来增强当前工作流,并加快获得可操作见解的速度
  • 把大部分时间花在独特的人类增值任务上,比如洞察力、沟通和决策

5。陷入后续问题的循环中

当使用仪表板执行诊断分析时,跟进是不可避免的。为了理解事物为什么会发生变化以及如何对其采取行动,需要更细致的洞察(例如,结合 2 或 3 个不同的维度)。手动分析可能需要多次迭代,并会产生后续循环,因为最初的答案只是皮毛。然而,如果没有数据团队的支持,企业领导通常很难回答他们的问题。

影响:不堪重负的数据团队、没有答案的问题、只触及表面的分析,以及错失的机会。

怎么破:

  • 投资工具和培训,让商业领袖能够回答他们的问题
  • 考虑决策智能平台,使利益相关者能够深入了解原因

6。未能标准化和简化洞察故事

报告和分析通常分布在各种平台上,并且缺乏一致的结构:指向仪表板的松散消息、带有即席计算的 Excel 表格、PowerPoint 幻灯片、概念页面、票证等……即使发现了见解,它们也不会被决策者发现,或者它们与业务优先级的关系没有得到很好的解释。

影响:难以解释结果并得出可行的见解,错失机会。

怎么破:

  • 建立通用的报告格式。利用瀑布图等标准方法来总结关键指标的变化。
  • 开发和推广数据叙事的最佳实践

底线:关注最后一英里

从团队沟通和协作的方式开始,延伸到用于发现见解的工具和分发见解的流程,这些不良的分析习惯正在阻碍团队征服最后一英里的分析,并导致错失机会…

从哪里开始?

  • 对你的现状进行一个全面的评估,看看你是否属于这些模式
  • 关注最阻碍你的是什么
  • 注意是什么在流程的早期破坏了您的价值链,并对接下来的步骤造成了多米诺骨牌效应。

习惯很难打破。花点时间评估、区分优先级并不断引入增量变化。

参考资料:

  1. Brent Dykes,数据分析马拉松:为什么您的组织必须关注终点 (2022),Forbes.com

想法?伸出手去 若昂索萨处长成长处 考萨 。敬请关注更多关于如何增加分析价值的帖子。

破解熊猫 GroupBy 函数背后的强大魔力

原文:https://towardsdatascience.com/breaking-down-the-powerful-magic-behind-the-pandas-groupby-function-b94cc2427eb9

对 groupby 如何工作的详细解释有助于您更好地理解它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

托拜厄斯·菲舍尔在 Unsplash 拍摄的照片

近年来,一些最受欢迎的数据集和民意调查都与政府选举有关。选举季节已经成为无数图表、地图、民意测验和预测通过大众媒体传播的时候。

我想让你想象你在一个忙碌的早晨醒来,开始翻阅你订阅的《纽约时报》(New York Times)的一些数据(如果你永远不会这么做,就迁就我一下)。你累了,眼睛勉强睁开,心理处理能力还在升温。你只是想要对当下发生的事情有一个快速、容易理解的洞察。

然后, Times 给你的是一个, 巨型 数据集,其中每一行都是单个选民,列包含关于年龄、地点、种族、性别等各种数据。等。—最后以选民选择的候选人结束。

那现在没什么意义了,对吧?即使您滚动了几个小时,以这种方式格式化的数据也不太可能为您提供关于底层数据集的任何有意义的信息。简直太分散了。太

作为数据科学家,我们的主要任务之一是从数据中辨别关键见解,并以简单易懂的方式提供给公众。有多种方法可以完成这项任务——我今天想重点介绍的一种方法是将数据的各种属性组合在一起,努力发现模式。

根据您选择的工具,方法可能会有所不同。在本文中,我将讨论 Python 的 Pandas 模块中分组和聚合数据的一种常用方法:groupby函数。

函数本身已经在各种文章中讨论过,但是一个经常被忽略的话题是幕后发生的“魔术”。在本文中,虽然我将简要回顾该函数的上下文,但我将主要深入研究 Pandas 在幕后定义的实际的GroupBy对象。通过研究它的结构,我希望你能更好地理解groupby实际上是如何工作的,以便在你未来的数据科学任务中更有效地使用它。

让我们开始吧。

快速回顾 Groupby

理解groupby的最好方法是通过例子。假设我们有下面这个叫做people的小数据集,它包含了人们的性别、年龄、身高和体重的信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

groupby函数的主要用例是按照特定的列对数据进行分组,并使用一些指定的函数为每个唯一的组聚合其他列的值。例如,如果我们想得到每种性别的平均年龄、身高和体重,我们可以这样做:

people.groupby('Sex').mean()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

您会注意到"Name"列被自动排除了,原因很简单,计算字符串列表的平均值没有逻辑意义。

还可以 1)一次只关注一列中的值,2)应用自定义聚合函数。例如,可能出于某些奇怪的原因,我们想要按性别划分的年龄的平方和。下面是完成这项任务的代码:

def sum_of_squares(arr):
    return sum([item * item for item in arr)])people.groupby('Sex')[['Age']].agg(sum_of_squares)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

以上示例中的一些要点:

  • 在我们的用户定义函数sum_of_squares中,我们利用了一个列表理解【1,2】来迭代地平方所有的项,然后对它们求和。
  • 你会注意到这个函数接受一个数组。这是因为当我们按'Sex'分组并提取出'Age'时,我们有效地将每个组的所有年龄(在本例中为'Male''Female')存储在一个数组中(或者从技术上讲,是一个系列对象 [3】)。然后,聚合函数接受该数组,并将其值聚合为输出数据帧中显示的每组的单个最终值。我们将在文章的下一部分对此有更深入的了解。
  • 使用双括号提取出'Age'列是一个语法上的小技巧,它使我们能够以 DataFrame 而不是 Series 的形式返回输出。

至此,我们已经回顾了我们需要的关于groupby的一切,以正确理解抽象层下面发生的事情。我们现在准备更深入。

Groupby 背后的“魔力”

为了简单起见,让我们坚持上面的第一个例子:在通过'Sex'变量分组之后,获得所有列的平均值。

代码 : people.groupby('Sex').mean()

之前:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

这一切都很好,但有一点不完整。怎么会?如果我们将数据转换分解成几个组成部分,我们会得到三个主要阶段:

  1. 原始的、未改变的数据帧(“之前”的图片)。
  2. 一种转换后的数据帧,它将感兴趣的列中的所有唯一标签与其他列中的相关值组合在一起。
  3. 一个最终的数据帧,它已经聚合了这些值,因此每个组都有一个单独的值(“后”图)。

中间阶段怎么了?为了深入理解groupby,这可以说是流程中最重要的部分,所以让我们看看是否有一种方法可以显示这个中间步骤的数据。

第一种尝试可能是在调用groupby之后、调用聚合函数(在我们的例子中是mean)之前尝试显示数据:

people.groupby('Sex')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

嗯,好吧——所以事情没有按计划进行。我们只是得到了字面量GroupBy对象的字符串表示,就像在 Pandas 中实现的那样。事实证明,要查看分组后的实际数据,我们需要使用对象的关联get_group函数:

people_grouped_by_sex = people.groupby('Sex')
for group in people['Sex'].unique():
    display(people_grouped_by_sex.get_group(group))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

让我们来分解一下:

  • 首先,我们将GroupBy对象存储在变量people_grouped_by_sex中。
  • 然后,我们使用一个循环来遍历'Sex'列的所有唯一标签,我们知道这些标签构成了GroupBy对象的唯一组。请注意,它也可以直接遍历一个硬编码的列表,比如['Male', 'Female'],但是我故意编写了上面的代码来演示如何将这种技术推广到一个更大的数据集——特别是在您可能不知道所有唯一的组标签的情况下。
  • 最后,我们使用GroupBy对象的get_group方法来访问每个组的数据帧——我喜欢称它们为“子帧”或“迷你数据帧”,尽管我会提到这些无论如何都不是标准术语。display函数在Jupyter Notebooks【4】中使用,以一种漂亮的、人类可读的格式输出你传递给它的任何对象。

现在,我们可以看到中间阶段发生了什么:Pandas 获取数据帧,并将其分成一堆更小的数据帧,每个数据帧包含我们分组所依据的列中的一个组标签的数据。然后将这些子帧的值汇总,得到最终的数据帧。

例如,在上面的第一个子帧中(对于组'Male'),'Age'列中的值是44, 30, 24,18。这些数字的平均值是29.00,确切地说,是在我们的GroupBy对象上调用mean函数后,我们在最终输出数据帧中看到的值。其他值的计算方式完全相同。

现在你知道了——groupby的秘密不再是秘密了。

一些最后的提示和想法

我将以一些通用的提示结束,下次你处理groupby时记住,无论是为你自己还是向他人解释:

  • 简单性:使用groupby的目的应该是简化你的数据,而不是让它更加复杂。
  • 聚焦:虽然有可能对多个栏目进行分组,但开始时慢一点,集中精力绘制聚焦的洞见通常是个好主意。即使一次只有一个专栏,您也可以做很多事情。
  • 适应性:不要纠结于这个单一的解决方案,因为根据你的情况可能会有更好的选择。在 Pandas 中还有其他方式来聚集数据。

最后一点,你可能想知道为什么 Pandas 不直接向我们展示这些迷你数据帧,而是需要一种迂回的方法来查看它们。从编程的角度来看,这是有意义的:用户不需要知道使用groupby时发生了什么。隐藏其工作方式可以作为一个抽象层,防止新用户在早期感到困惑或不知所措。

也就是说,我认为钻研这些细节是非常有用的教学工具,可以更好、更深入地理解groupby实际上是如何工作的。获得这种理解帮助我更好地解析和编写更复杂的groupby查询,我希望它能为你做同样的事情。

就这样,下次再见了。快乐分组!

想擅长 Python? 获取独家,免费获取我简单易懂的攻略 。想在介质上无限阅读故事?用我下面的推荐链接注册!

https://murtaza5152-ali.medium.com/?source=entity_driven_subscription-607fa603b7ce---------------------------------------

我叫穆尔塔扎·阿里,是华盛顿大学研究人机交互的博士生。我喜欢写关于教育、编程、生活以及偶尔的随想。

参考

[1]https://towardsdatascience . com/whats-in-a-list-comprehension-C5 d 36 b 62 f 5
【2】https://level up . git connected . com/whats-in-a-list-comprehension-part-2-49d 34 bada 3 f 5
【3】https://pandas.pydata.org/docs/reference/api/pandas.Series.html
【4】https://level up . git connected . com/whats-in-a-jupyter-notebook-windows-edition-1f 69 c 290 a 280

分解它:K-均值聚类

原文:https://towardsdatascience.com/breaking-it-down-k-means-clustering-e0ef0168688d

使用 NumPy 和 scikit-learn 探索和可视化 K-means 聚类的基本原理。

**Outline:**
[1\. What is K-Means Clustering?](#1791)
[2\. Implementing K-means from Scratch with NumPy](#f947)
   [1\. K-means++ Cluster Initialization](#96e1)
   [2\. K-Means Function Differentiation](#d0b4)
   [3\. Data Labeling and Centroid Updates](#ea21)
   [4\. Fitting it Together](#9b4e)
[3\. K-Means for Video Keyframe Extraction: Bee Pose Estimation](#e5af)
[4\. Implementing K-means with](#aabf) [scikit-learn](#aabf)
[5\. Summary](#8571)
[6\. Resources](#f720)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文章概述

参见我的 GitHub learning-repo 获取这篇文章背后的所有代码。

1.什么是 K-Means 聚类?

k 均值聚类是一种算法,用于将数据分类到用户定义数量的组中, k 。K-means 是一种无监督的机器学习形式,这意味着在运行算法之前,输入数据没有标签。

由于各种原因,使用 k-means 等算法对数据进行聚类是有价值的。首先,聚类用于在构建数据分析管道时识别未标记数据集中的独特组。这些标签对于数据检查、数据解释和训练 AI 模型是有用的。K-means 及其变体在各种上下文中使用,包括:

2.用 NumPy 从头开始实现 K-Means

为了获得对 k-means 如何工作的基本理解,我们将检查算法的每个步骤。我们将通过可视化的解释和用 NumPy 从头构建一个模型来实现这一点。

k-means 背后的算法和数学函数很漂亮,但相对简单。让我们从一个概述开始:

K-Means 算法简介

总之,k-means 算法有三个步骤:

  1. 指定初始聚类中心(质心)位置
  2. 基于最近的质心标注数据
  3. 将质心移动到新标记的数据点的平均位置。返回步骤 2,直到聚类中心收敛。

让我们继续构建模型。为了使用该算法,我们需要编写以下函数:

K-Means 类函数概述

2.1.集群初始化

k-means 算法的第一步是让用户选择数据应该被聚类到的组的数量, k

在算法的原始实现中,一旦选择了 k ,将通过随机选择输入数据点的 k 作为质心起始位置来初始化聚类中心(或质心)的初始位置。

这种方法被证明是非常低效的,因为开始的质心位置可能最终彼此随机接近。2006 年,亚瑟和瓦西维茨基 开发了一种新的更有效的质心初始化方法。他们在 2007 年发表了他们的方法,称之为 k-means++

k-means++ 不是随机选择初始质心,而是基于距离分布有效地选择位置。让我们想象一下它是如何工作的:

K-Means ++质心初始化

既然 k-means++背后的直觉已经暴露出来,让我们为它实现函数:

k-Means**_ init _ centroids _ plus plus**函数

值得注意的是,除了必须手动选择 k 之外,还可以使用几种无偏技术来确定最佳数字。 Khyati Mahendru 在她的文章中解释了其中两种方法,即剪影方法 。值得一读!

2.2.数据标注和质心更新

质心初始化之后,算法进入数据标记和质心位置更新的迭代过程。

在每次迭代中,输入数据将首先根据其与质心的接近程度进行标注。在此之后,每个质心的位置将被更新为其聚类中数据的平均位置。

这两个步骤将重复进行,直到标签分配/质心位置不再改变(或收敛)。让我们想象一下这个过程:

现在,让我们实现数据标签代码:

k-Means**_ compute _ labels**函数

最后,我们将实现质心位置更新功能:

k-Means**_ 更新 _ 质心 _ 位置**功能

2.3.k-均值函数微分

k-means 算法的第三步是更新质心的位置。我们看到这些质心被更新到所有聚类的标记点的平均位置。

将质心更新到平均聚类位置似乎很直观,但是这一步背后的数学原理是什么?基本原理在于 k-means 方程的微分。

让我们通过探索 k-means 函数微分的动画证明来展示这种直觉。该证明表明位置更新是旨在最小化组内方差的 k 均值方程的结果。

k-均值函数微分

2.4 装配在一起

现在我们已经为 k-means 模型构建了主干函数,让我们将它结合到一个单一的fit函数中,该函数将使我们的模型适合输入数据。我们还将在这里定义__init__函数:

k-表示拟合函数

K-Means init 函数

现在我们可以把这个模型和我的漫游笔记本一起使用了。这个笔记本使用合成生成的数据(如上面的视频所示)来演示我们新编写的 k_means.py 代码的功能。

3.视频关键帧提取的 k-均值算法:蜜蜂姿态估计

太棒了——我们已经完全从零开始构建了 k-means 模型。与其将这些代码扔到一边,不如让我们在一个示例场景中使用它们。

在过去的几年里,神经科学和 DL 研究社区取得了令人印象深刻的进步,实现了高度准确和自动化的动物行为跟踪和分析*。该研究领域中使用的框架实现了各种卷积神经网络架构。这些模型还严重依赖迁移学习来减少研究人员需要生成的训练数据量。这些框架的两个流行例子包括 DeepLabCutSLEAP

  • 边注:这个子域通常被称为 计算神经行为学

为了训练模型来自动跟踪动物身上的特定点,研究人员通常必须从他们的行为视频中手动标记 100-150 个独特的帧。考虑到所有的事情,这是一个非常小的数字,可以无限期地自动跟踪长的行为视频!

然而,当标记这些训练帧时,研究人员必须考虑的一个重要方面是,它们应该尽可能地互不相同。如果存在数小时的记录,给一个视频的前 5 秒贴标签是非常没有目的的。这是因为动物在前 5 秒的行为和身体状态可能不会准确地代表整个视频数据集的特征。因此,该模型将不会被训练成有效地识别各种特征。

那么这和 k 均值有什么关系呢?无需从视频中手动识别唯一的关键帧,可以实现 k-means 等算法来自动将视频帧聚类到唯一的组中。让我们想象一下这是如何工作的:

视频关键帧提取的 k-均值算法

为了获得对这个过程的实际理解,您可以使用我的漫游笔记本跟随用于隔离这些帧的代码。

4.用 scikit-learn 实现 K-means

在现实世界中,除非必要,否则通常应该避免实现自己构造的算法。相反,我们应该依靠由专家付费和志愿者贡献者维护的精心有效设计的框架。

在这个实例中,让我们看看用 scikit-learn 实现 k-means 有多容易。这个类的文档可以在[这里](http://4. Implementing K-means with scikit-learn)找到。

模型初始化和拟合的 scikit-learn 实现与我们的非常相似(不是巧合!),但是我们必须跳过大约 250 行的代码。此外,scikit-learn 框架为 k-means 实现了优化的 BLAS 例程,使得它们的实现比我们的快得多。

长话短说——从零开始学习是无价的,但从零开始工作却不是。

5.摘要

在这篇文章中,我们探索 k-means 算法背后的数学和直觉的基础。我们使用 NumPy 从头构建了一个 k-means 模型,使用它从一个动物行为视频中提取唯一的关键帧,并学习了如何使用 scikit-learn 实现 k-means。

我希望这篇文章对你有价值!如有任何意见、想法或问题,请随时联系我。

6.资源

****References:** [1\. Hicks SC, Liu R, Ni Y, Purdom E, Risso D (2021). mbkmeans: Fast clustering for single cell data using mini-batch *k*-means. PLoS Comput Biol 17(1): e1008625.](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008625)
[2\. Sharma A, Rastogi V (2014). Spam Filtering using K mean Clustering with Local Feature Selection Classifier. Int J Comput ApplMB means108: 35-39.](https://www.semanticscholar.org/paper/Spam-Filtering-using-K-mean-Clustering-with-Local-Sharma-Rastogi/901af90a3bf03f34064f22e3c5e39bbe6a5cf661?p2df)
[3\. Muhammad Shahzad, Bank Customer Segmentation (PCA-KMeans)](https://www.kaggle.com/code/muhammadshahzadkhan/bank-customer-segmentation-pca-kmeans)
[4\. Arthur D, Vassilvitskii S (2006). k-means++: The Advantages of Careful Seeding. *Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms*. Society for Industrial and Applied Mathematics Philadelphia, PA, USA. pp. 1027–1035](http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf)**Educational Resources:**
- [Google Machine Learning: Clustering](https://developers.google.com/machine-learning/clustering)
- [Andrew Ng, CS229 Lecture Notes, K-Means](http://cs229.stanford.edu/notes2020spring/cs229-notes7a.pdf)
- [Chris Piech, K-Means](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html)**

分解它:逻辑回归

原文:https://towardsdatascience.com/breaking-it-down-logistic-regression-e5c3f1450bd

用 NumPy、TensorFlow 和 UCI 心脏病数据集探索逻辑回归的基本原理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

逻辑回归概述。图片作者。

**Outline:** 1\. [What is Logistic Regression?](#6a7a) 2\. [Breaking Down Logistic Regression](#c9d3)
   1\. [Linear Transformation](#9cd1)
   2\. [Sigmoid Activation](#bd84)
   3\. [Cross-Entropy Loss Function](#43d1)
   4\. [Gradient Descent](#cee3)
   5\. [Fitting the Model](#3930)
3\. [Learning by Example with the UCI Heart Disease Dataset](#6f98)
4\. [Training and Testing Our Classifier](#84da) 5\. [Implementing Logistic Regression with TensorFlow](#e0fa)
6\. Summary
7\. [Notes and Resources](#df98)

1.什么是逻辑回归?

逻辑回归是一种受监督的机器学习算法,它为输入数据集创建分类标签( 12 )。逻辑回归(logit)模型在各种环境中使用,包括医疗研究商业分析。

理解逻辑回归背后的逻辑可以为深度学习的基础提供强有力的基础见解。

在本文中,我们将分解逻辑回归来获得对这个概念的基本理解。为此,我们将:

  1. 探索逻辑回归的基本组件,并使用 NumPy 从头开始构建模型
  2. 在 UCI 心脏病数据集上训练我们的模型,以根据成人的输入健康数据预测他们是否患有心脏病
  3. 使用 TensorFlow 构建“正式”logit 模型

你可以用我的演练 Jupyter 笔记本和我的 GitHub learning-repo 中的 Python 脚本文件来遵循这篇文章中的代码。

2.分解逻辑回归

逻辑回归模型为输入数据集创建概率标签。这些标签通常是二元的(是/否)。

让我们通过一个例子来突出逻辑回归的主要方面,然后我们将开始我们的深入研究:

想象一下,我们有一个 logit 模型,它被训练来预测某人是否患有糖尿病。模型的输入数据是一个人的年龄身高体重血糖。为了进行预测,模型将使用逻辑函数转换这些输入数据。该函数的输出将是在 01 之间的概率标签。这个标签离 1 越近,模型对这个人有糖尿病的把握就越大,反之亦然。

重要的是:为了创建分类标签,我们的糖尿病 logit 模型首先必须学习如何衡量每条输入数据的重要性。为了预测糖尿病,很可能某人的血糖比其身高高**。这种学习使用一组标记的测试数据和梯度下降来进行。学习到的信息以逻辑函数中使用的权重偏差参数值的形式存储在模型中。**

这个例子提供了逻辑回归模型做什么以及它们如何工作的卫星视图概要。我们现在准备好进行深潜了。

为了开始我们的深入探讨,让我们来分解逻辑回归的核心部分:逻辑函数。

我们将使用 NumPy 从头开始构建自己的 logit 模型,而不仅仅是从阅读中学习。这将是模型的轮廓:

在第 2.1 节和第 2.2 节中,我们将实现线性和 sigmoid 变换函数。

2.3 中,我们将定义交叉熵成本函数,以告知模型其预测何时为“好”和“坏”。在第 2.4 节中,我们将通过梯度下降帮助模型学习其参数。

最后,在第 2.5 节中,我们将把所有这些功能联系在一起。

2.1 线性变换

正如我们在上面看到的,逻辑函数首先使用其学习到的参数将线性变换应用于输入数据:权重和偏差

权重 ( W )参数表示每条输入数据对分类的重要性。个体重量越接近 0 ,相应的数据对分类越不重要。权重向量和输入数据 X 的点积将数据展平成一个标量,我们可以将它放在一个数轴上。

例如,如果我们试图根据一个人的身高和醒着的时间来预测他是否疲劳,那么这个人的身高权重将非常接近于零。

bias(b)参数用于沿该行的判定边界( 0 )移动该标量。

让我们想象一下逻辑函数的线性分量如何使用其学习到的权重和偏差来转换来自 UCI 心脏病数据集的输入数据。

我们现在准备开始填充模型的函数。首先,我们需要用它的权重偏差参数初始化我们的模型。权重参数将是一个(n, 1)形状的数组,其中n等于输入数据中的特征数量。偏置参数是一个标量。两个参数都将被初始化为 0。

接下来,我们可以填充函数来计算逻辑函数的线性部分。

2.2 乙状结肠激活

逻辑模型通过将 sigmoid 函数应用于逻辑函数线性变换的输出数据来创建概率标签( ŷ )。sigmoid 函数对于从输入数据创建概率很有用,因为它压缩输入数据以产生介于 01 之间的值。

sigmoid 函数是 logit 函数的逆函数,因此得名逻辑回归。

为了从 sigmoid 函数的输出中创建二进制标签,我们将决策边界定义为 0.5 。这意味着如果 ŷ ≥ 0.5 ,我们说标号是,当 ŷ < 0.5 时,我们说标号是

让我们想象一下 sigmoid 函数是如何将输入数据从逻辑函数的线性分量转换而来的。

现在,让我们在模型中实现这个函数。

2.3 交叉熵成本函数

为了教会我们的模型如何优化其 权重偏差 参数,我们将输入训练数据。然而,为了让模型学习最优参数,它必须知道如何判断其参数在生成概率标签方面是“好”还是“坏”。

这个“良好”因子,或者概率标签和真实标签之间的差异,被称为单个样本的损失。我们在操作上说,如果参数在预测标签时表现不佳,损失应该是高的,如果表现良好,损失应该是低的。

然后对训练数据上的损失进行平均,以产生成本

逻辑回归采用的函数是交叉熵成本函数。在下面的函数中, Y 是地面真实标签, A 是我们的概率标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交叉熵代价函数

注意,该函数根据 y1 还是 0 而变化。

  • y = 1 时,该函数计算标签的 日志 。如果预测正确,则损失将为 0 (即 log(1) = 0 )。如果不正确,随着预测越来越接近 0 ,损失会越来越大。
  • y = 0 时,该函数从 y 中减去 1 ,然后计算标签的 log 。这种减法使正确预测的损耗保持为低而不正确预测的损耗保持为高

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1 和 0 地面真实标签的交叉熵情况

现在让我们填充函数来计算输入数据数组的交叉熵成本。

2.4 梯度下降

既然我们可以计算模型的成本,我们必须使用成本通过梯度下降来“调整”模型的参数。如果你需要梯度下降的复习,看看我的 分解:梯度下降 帖子。

让我们创建一个假的场景:想象我们正在训练一个模型来预测一个成年人是否累了。我们的伪模型只得到两个输入特征:heighthours spent awake。为了准确预测一个成年人是否累了,该模型可能应该为height特征开发一个非常小的权重,而为hours spent awake特征开发一个大得多的权重。

梯度下降将使这些参数下降它们的梯度,这样它们的新值将产生更小的成本。记住,梯度下降使函数的输出最小化。我们可以想象下面的例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

梯度下降示例

为了计算成本函数 w . r . t .权重偏差 的梯度,我们必须实现链式规则。为了找到我们参数的梯度,我们将区分成本函数和 sigmoid 函数,以找到它们的乘积。然后我们将分别区分线性函数 w . r . t .权重偏差 函数。

让我们探索一下逻辑回归偏微分的直观证明:

让我们实现这些简化的等式来计算训练示例中每个参数的平均梯度。

2.5 拟合模型

最后,我们已经为我们的模型构建了所有必要的组件,所以现在我们需要集成它们。我们将创建一个与批次小型批次梯度下降兼容的函数。

  • 批量梯度下降中,每个训练样本用于更新模型的参数。
  • 小批量梯度下降中,选择训练样本的随机部分来更新参数。小批量选择在这里并不重要,但是当训练数据太大而不适合 GPU/RAM 时,它非常有用。

提醒一下,拟合模型是一个三步迭代过程:

  1. 权重偏差 对输入数据应用线性变换
  2. 应用非线性 sigmoid 变换来获取概率标签。
  3. 计算成本函数 w.r.t Wb 的梯度,并逐步降低这些参数的梯度。

让我们来构建函数!

3.UCI 心脏病数据集的实例学习

为了确保我们不只是孤立地创建一个模型,让我们用一个示例人类数据集来训练该模型。在临床健康的背景下,我们将训练的模型可以提高医生对患者健康风险的认识。

让我们通过 UCI 心脏病数据集的例子来学习。

数据集包含关于成年患者心脏和身体健康的 13 特征。每个样本还贴有标签,以表明受试者是否患有是否患有心脏病。

首先,我们将加载数据集,检查它是否缺少数据,并检查我们的要素列。重要的是,标签在这个数据集中是颠倒的(例如,1 =没有疾病,0 =疾病),所以我们必须解决这个问题。

Number of subjects: 303
Percentage of subjects diagnosed with heart disease:  45.54%
Number of NaN values in the dataset: 0

让我们也把特征形象化。我已经创建了自定义人物,但是在这里看到我的要点用 Seaborn 创建你自己的人物。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据我们的检查,我们可以得出结论,没有明显的缺失特征。我们还可以看到,在几个特征中存在一些 stark 组分离,包括年龄(age)、运动诱发的心绞痛(exang)、胸痛(cp)和运动期间的心电图形状(oldpeak & slope)。这些数据将有助于训练 logit 模型!

为了结束这一部分,我们将完成数据集的准备。首先,我们将对数据进行 75/25 分割,以创建测试和训练集。然后我们将标准化*下面列出的连续特性。

to_standardize = ["age", "trestbps", "chol", "thalach", "oldpeak"]

*除非您正在运行某种形式的正则化,否则您不必对 logit 模型的数据进行标准化。我在这里这样做只是作为一种最佳实践。

4.训练和测试我们的分类器

现在,我们已经构建了模型并准备好了数据集,让我们训练模型来预测健康标签。

我们将实例化模型,用我们的x_trainy_train数据训练它,并用x_testy_test数据测试它。

Final model cost: 0.36
Model test prediction accuracy: 86.84%

这就是我们得到的结果:测试集的准确率为 86.8% 。这比 50%的随机几率要好得多,对于这么简单的模型,准确率还是挺高的。

为了更仔细地观察事物,让我们在模型的训练过程中可视化模型的特征。在第一行,我们可以看到模型在训练过程中的成本和准确性。然后在最下面一行,我们可以看到 权重偏差 参数在训练过程中是如何变化的(我最喜欢的部分!).

5.用 TensorFlow 实现逻辑回归

在现实世界中,当您需要使用模型时,最好不要构建自己的模型。相反,我们可以依赖功能强大、设计良好的开源软件包,如 TensorFlow、PyTorch 或 scikit-learn 来满足我们的 ML/DL 需求。

下面,我们来看看用 TensorFlow 建立一个 logit 模型,并将它的训练/测试结果与我们自己的进行比较是多么简单。我们将准备数据,创建一个具有 sigmoid 激活的单层单单元模型,并使用二元交叉熵损失函数编译它。最后,我们将拟合和评估模型。

Epoch 5000/5000
1/1 [==============================] - 0s 3ms/step - loss: 0.3464 - accuracy: 0.8634Test Set Accuracy:
1/1 [==============================] - 0s 191ms/step - loss: 0.3788 - accuracy: 0.8553
[0.3788422644138336, 0.8552631735801697]

由此我们可以看到,该模型的最终训练成本为 0.34(相比于我们的 0.36),测试集准确率为 85.5% ,与我们上面的结果非常相似。引擎盖下有一些小差异,但模型性能非常相似。

重要的是,TensorFlow 模型是用不到 25 行代码构建、训练和测试的,而我们在logit_model.py脚本中用了 200 多行代码。

6.摘要

在这篇文章中,我们已经探索了逻辑回归的各个方面。我们用 NumPy 从头开始构建一个模型。我们首先实现了线性和 sigmoid 转换,实现了二元交叉熵损失函数,并创建了一个拟合函数来用输入数据训练我们的模型。

为了理解逻辑回归的目的,我们然后在 UCI 心脏病数据集上训练我们的 NumPy 模型来预测患者的心脏病。我们发现这个简单的模型有 86%的预测准确率——非常令人印象深刻。

最后,在花时间学习和理解这些基础知识之后,我们看到了用 TensorFlow 构建 logit 模型是多么容易。

总之,逻辑回归是一种有用的预测分析算法。理解这个模型是研究深度学习道路上强有力的第一步。

好了,就这样了!如果你已经走了这么远,感谢你的阅读。我希望这篇文章对你了解逻辑回归的基本原理有所帮助。

7.注释和资源

以下是我最初学习逻辑回归时的几个问题。也许你也会对它们感兴趣!

Q1: 逻辑回归模型基本上不就是神经网络的单个单元吗?

A1: 有效,是的。我们可以将逻辑回归模型视为单层、单单元神经网络。 塞巴斯蒂安·拉什卡 对为什么会这样提供了一些很好的见解。许多神经网络使用 sigmoid 激活函数来生成单位输出,就像逻辑回归一样。

Q2: 我们所说的后勤是什么意思?

A2: 逻辑回归的“逻辑”来源于模型使用了 logit 函数的逆函数,即 sigmoid 函数。

Resources
- [UCI Heart Disease Dataset](https://www.google.com/search?client=safari&rls=en&q=uci+heart+disease+dataset&ie=UTF-8&oe=UTF-8)
- [Speech and Language Processing. Daniel Jurafsky & James H. Martin.](https://web.stanford.edu/~jurafsky/slp3/5.pdf) - [CS229 Lecture notes, Andrew Ng](https://see.stanford.edu/materials/aimlcs229/cs229-notes1.pdf)
- [Manim, 3Blue1Brown](https://github.com/3b1b/manim)

除特别注明外,所有图片均为作者所有。

打破世代诅咒:构建成功的数据团队

原文:https://towardsdatascience.com/breaking-the-generational-curse-structure-your-data-team-for-success-5b15e860b542

在这一点上,建立一个内部数据团队是一个很好的商业举措,这是一个普遍接受的事实。随着越来越多的领导者开始意识到,投资数据和分析团队不仅有助于衡量企业的进步和成功,还可以更广泛地利用数据来帮助领导层驾驭快速变化,并识别增长和运营效率的新机遇。

然而,许多数据专业人员受到其组织结构的束缚。希望专注于有意义的数据工作的分析师发现自己陷入了每天都必须构建下一个仪表板的苦差事。杰出的数据科学家应该专注于构建更好产品的核心工作,但却经常陷入响应特定业务请求的持续循环中。这些问题围绕着如何有效地导航和支持更大的组织,比缺乏基础设施和工具更有可能破坏数据团队的潜力。

那么,对于数据领导者来说,确保团队成功的最佳方式是什么呢?

如何在餐桌上找到自己的座位

当建立您的数据团队时,首先出现的问题之一是团队应该在组织中处于什么位置。我通常会看到一些结构和报告的标准模型,每种模型都有自己的优点和缺点:

  • 集中。在传统企业中,内部数据团队通常是集中的,向首席财务官、首席数据官甚至首席执行官等执行领导报告。在集中式团队中,数据主管通常拥有组织的所有数据和底层技术(例如 AI/ML 工程、数据工程、分析等)。)这种模式有一些优势,因为数据团队领导可以作为执行领导的得力助手,与企业的愿景和战略密切相关。然而,这种模式也有一些缺点。集中式数据团队通常被视为“服务团队”,其职能类似于组织其他部门的内部顾问。这加剧了“服务台”的动态,导致分析师不断地响应来自业务利益相关者的临时请求,而不是参与更有意义和战略性的数据工作。在这个模型中,数据团队的物理和逻辑分离有助于事务关系,如果数据团队被认为是不可接近的,业务的其余部分可能不倾向于使用他们的产品和服务。如果没有高管团队的“大力支持”,在集中模式下工作的数据团队可能会发现自己有抱负,但没有执行能力。
  • 嵌入式。在这种模式下,各个业务部门雇佣自己的一线数据专家来支持他们的领域。例如,销售团队可能有一个分析师跟踪他们的渠道,客户成功可能有其他人专门从事用户行为和保留率的工作。这种嵌入式方法可以在运营效率方面提供一些优势,并允许数据专业人员深入了解业务利益相关者的需求。另一方面,这也可能导致分析师对他们自己的特定业务部门目光短浅,而没有培养对更大图景的更深入理解,因为它与业务状态有关。它还会导致高度分散的数据堆栈,因为每个团队都使用自己的工具并负责维护自己的资产,通常需要一个单独的数据工程团队来管理数据管道和基础设施。
  • 杂交。许多组织已经采用了混合星型结构。在这种方法中,一个集中的团队,有时称为“卓越中心”,负责为整个组织构建工具并建立分析和数据科学流程,但数据组织同时维护 pod 以支持特定的业务部门。重要的是,这些都向同一个经理或主管汇报。功能单元为这些业务团队提供了一个数据指南针,并帮助他们坚持组织的更大路线图。pods 向数据主管汇报,所有团队成员作为同一组织的一部分,员工有机会获得培训、指导和明确的晋升途径。但他们也有虚线汇报给他们所服务的业务单位的领导。混合结构是最具创新性的,也可能是最有效的,因为它提供了紧密协作和可见性的混合,以及与集中式模型相关的高级控制。但这也是最复杂的组织工作。数据团队将各种业务单位视为客户,而 pod 的结构旨在提供适当级别的数据产品、服务和持续支持。pod 可以由任何头衔或角色组成(例如,数据产品经理、分析师、数据工程师、机器学习和人工智能专家等。),这取决于企业的需求。对于数据堆栈高度复杂并将数据视为战略资产的公司来说,这种模式被证明是最成功的。

尽管这些模型的方向和交付方式各不相同,但对于大多数组织来说,最合适的结构将反映您的数据团队成立的方式及其当前的成熟阶段。在采用集中化方法的企业中,通常会有一个具有前瞻性思维的领导者,他在某个时候决定投资于一项数据功能,并主动从头开始构建一个团队来实现它。嵌入式方法通常是随着公司发展的迫切需求而有机出现的,而不是有意的数据策略的结果。推荐的混合方法通常是从经验和对其他两种结构的限制的失望中发展而来的——它很少是一开始就选择的外形。

无论您选择哪种模式,有一个数据领导者来引领公司的数据计划都是至关重要的。在混合方法中,pod 中的数据领导者在每个职能领域拥有领导地位也很重要。

给数据领导者的 3 条建议

对于数据领导者来说,建立一个突出的声音是至关重要的(即使这个声音来自一个执行冠军)。一旦他们在管理层找到了自己的位置,这里有 4 个确保成功的小贴士:

  1. **对你实现的结构类型要有意识,因为它们都有权衡。**为了确定前进的最佳路线,评估你内部已经拥有的人才,并以此为基础进行培养。现在就开始计划,这样你就可以继续沿着正确的方向发展你的组织结构。
  2. **纵向思考你应该如何发展你的团队结构。**在开始您的数据之旅时,为了满足您的即时需求,只进行招聘和扩展似乎就足够了,但随着业务的发展,对业务复杂性的长远观点也很重要。
  3. 为您的数据目标提供安全支持。数据领导者不仅需要在管理层占有一席之地,还需要获得管理层对数据团队目标的支持。如果没有适当的组织支持,无论结构和计划构思得多么好,数据团队都无法取得成功。确定具有内在分析能力的内部拥护者,他们可能能够为您的团队和组织的数据使用进行宣传。

给数据专业人员的 3 条建议

展望未来,所有的商业领袖都需要在如何使用数据方面积累扎实的工作知识,以便与同行建立共识。为了有效地执行,组织还需要建立有效的数据团队来支持组织对数据的理解和使用。

对于试图在发展自己职业生涯的同时驾驭组织动态的年轻数据专业人员来说,了解这些模型的细微差别会带来巨大的好处。深入了解您的数据团队的当前结构可以帮助您回答一些重要问题,例如:

  1. 你在你的组织中被如何看待和重视?您的团队结构是否允许数据专业人员与其他部门发展真正的合作伙伴关系,或者您是否被孤立并被视为独立于业务团队的实体?
  2. 你是否有足够的时间和支持来进行广泛而有意义的分析,或者你是否是一个支持者,被要求完成随机的数字请求?
  3. 您如何鼓励您的组织围绕数据发展其思维和流程?就 1 年、3 年和 5 年计划而言,你有什么建议?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由斯蒂芬·孙平Unsplash 上拍摄

桥接数据操作和多操作

原文:https://towardsdatascience.com/bridging-dataops-mlops-301f010caf30

作为新数据源的 ML 模型推理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是在第 36 届 NeurIPS 关于部署和监控机器学习系统的挑战的研讨会(【DMML】)、2022 年( pdf ) (SlidesLive 视频)上提交的论文“组合 AI 的 MLOps”的博客版本。

介绍

作为一名数据分析和人工智能/人工智能从业者,我仍然看到这两个生态系统之间的巨大差异。

当我第一次听说 DataOps 和 MLOps——这两个框架支持数据和 ML 管道时,我想知道为什么我们需要两个独立的框架?数据是人工智能/人工智能的一个关键组成部分(至少对于受监督的人工智能来说是这样,它可能占今天企业人工智能的 80%),尤其是在以数据为中心的人工智能时代。

对于门外汉来说,以数据为中心的人工智能将人工智能/建模从算法/建模部分重新聚焦到底层数据。这是基于一个假设,即一个好的算法或模型能够从训练数据集中挤出的“理解”量是有限的。因此,提高模型准确性的推荐方法是关注训练数据集:收集更多数据、添加合成(外部)数据、提高数据质量、尝试新颖的数据转换等等。

因此,问题仍然是为什么我们需要分别考虑数据操作和 m 操作,或者数据操作是 m 操作的一部分,嵌入在 m 操作中?让我们投入进去,希望我们不会以第三个数据操作框架结束— 请提出一个更好的流行词,你永远不知道你会出名 -😃

集成 BI 和 ML

理想的世界应该是下图这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:统一的 BI & AI/ML 管道(图片由作者提供)

结构化和非结构化的源数据被吸收到青铜层,在那里被净化和标准化到银层,进一步建模和转换到金层。数据现在准备好供两个 BI 报告工具& ML 管道使用。

然而,在现实中,我们看到这种管理/处理的数据被移动到另一个位置,例如云存储桶或另一个数据湖,在那里它被进一步转换为 ML 培训和部署的一部分。

所以图 1。在企业环境中,类似于图 2(下图):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 DataOps 和 MLOps 管道中的数据处理(图片由作者提供)

MLOps 的数据(预处理)部分集中于将数据从源移动到 ML 模型,而不一定包括模型如何对数据本身执行。这通常包括一系列支持学习算法的转换。例如,数据科学家可能选择构建线性回归管道或探索性因素分析管道来支持 ML 模型。

ML 训练和验证( 链接 )需要执行比传统 ETL 工具支持的功能更复杂的功能。在复杂的数据处理、聚合和回归中经常会出现这种情况。这里推荐的方法是用有向无环图(DAG)流来补充数据处理策略。

与 BI 中更线性的数据流相比,DAG 流支持用于数据路由、统计转换和系统逻辑的可扩展有向图。像 Apache Airflow 这样的工具支持与 DAG 流相关联的创作、管理和维护,然后可以以编程方式创作 DAG 流,以与 ETL 管道集成。

不用说,这导致了冗余和 DataOps 和 MLOps 管道的碎片。可以公平地说,今天的 DataOps 更多地与 BI/结构化分析相关,而 MLOps 通过嵌入数据(预)处理来解决整个 ML 管道。

工具/平台供应商已经开始朝着这个方向努力,我们已经看到了一些解决这个问题的初始产品。雪花最近宣布 Snowpark Python API 允许 ML 模型在雪花内训练和部署,Snowpark 允许数据科学家使用 Python(而不是用 SQL 写代码)。

谷歌云平台(GCP)提供了 BigQuery ML ,这是一个 GCP 工具,允许在 GCP 的数据仓库环境中纯粹使用 SQL 来训练 ML 模型。同样, AWS 红移数据 API 让任何用 Python 编写的应用都可以轻松地与红移交互。这允许 SageMaker 笔记本连接到 Redshift 集群,并在 Python 中运行数据 API 命令。就地分析提供了一种有效的方法,可将数据从 AWS 的 DWH 直接导入笔记本电脑。

作为新数据源的 ML 模型推理

在本节中,我们考虑 MLOps 管道的另一个缺失的“数据”方面,其中部署的 ML 模型生成新数据,充当数据源

让我们考虑一个合成 AI 场景(图 3):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:合成人工智能场景(图片由作者提供)

考虑消费电子产品供应商的(在线)维修服务。该服务包括一个计算机视觉(CV)模型,该模型能够根据受损产品的快照评估所需的维修。如果用户对报价满意,则服务被转移到聊天机器人,聊天机器人与用户对话以捕捉处理请求所需的附加细节,例如损坏细节、用户名、联系细节等。

将来,当供应商寻求开发产品推荐服务时,会考虑维修服务。由维修服务收集的数据:用户拥有的产品的状态(由 CV 评估模型收集)以及他们的人口统计数据(由聊天机器人收集)——为推荐服务提供额外的标记训练数据。

我们继续组合场景,其中供应商进一步希望开发一个计算机视觉(CV)支持的制造缺陷检测服务。回想一下,维修服务已经标记了受损产品的图像,因此在这里也可以利用它们。标记的图像还可以作为反馈回路提供给维修服务— 以改进其底层 CV 模型。

总的来说,由部署的 ML 模型做出的推断可以作为反馈循环来提供,以增强部署的模型的现有训练数据集,或者作为新模型的训练数据集。这导致了一个场景,其中部署的 ML 模型生成新数据——充当 MLOps 管道的数据源。

图 4(下面)示出了扩展的 MLOps 流水线,其中(部署的)ML 模型推理被集成为(新的)数据源。合成数据,即合成生成的与原始训练数据集非常相似的数据(基于生成神经网络),也可以被认为是类似的附加数据源。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4:(部署的)作为附加数据源的 ML 模型推理(作者图片)

参考

弥合评估差距

原文:https://towardsdatascience.com/bridging-the-evaluation-gap-5e8af3e16ff0

使用在线整数序列百科全书(OEIS)作为数论领域的数据科学先知

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由 freepik 创作。

正如之前讨论的这里(和这里这里)我最近很享受使用数据科学的工具探索数论领域。由于我不是数论专家,这迫使我面对一个有趣的、具有挑战性的、熟悉的问题,即:

我如何评价我发现的东西?

我如何知道我是否在正确的轨道上?作为一名数据科学家,我可以生成和分析数据,拟合模型,确定有趣的关系,甚至做出预测,但鉴于我在数论领域的有限知识,我如何判断产生的结果是否有意义或新颖?在这篇短文中,我将讨论我是如何处理这个问题的,以及我已经确定的解决方案。

他的评估挑战对我来说并不陌生,也不是数论领域独有的。在我的日常工作中,作为一名在人工智能和机器学习领域工作的学者,确定如何客观地评估一个新算法或一个已学习的模型,是每个研究项目的关键组成部分。这通常意味着确定一个客观的基础数据来源,以评估模型预测的准确性。我们经常使用现有的基准数据集进行训练和测试。例如,在推荐系统领域, MovieLens 数据集是一个常见的选择。它包含数十万用户的数百万电影评级,并且使用数据集的训练子集构建的模型的评级预测可以在单独的测试子集上进行评估,例如通过将测试用户的预测评级与其实际评级进行比较。在机器学习和信息检索研究的许多不同领域都使用了类似的方法。

数论的领域是相当不同的。作为纯数学领域,重点是严格证明而不是经验评估。然而,我正在做的这个词本质上是经验性的。我在数据中寻找新颖和有趣的模式,如果我确实发现了一些有趣的东西,那么,在适当的时候,其他人可能能够将这些模式和数据转化为正式的定理和严格的证明,但这不是我的核心优势。但是这给我留下了一个难题:当我识别新的模式时,我怎么才能知道它们是新颖的还是有趣的?我一直在探索的解决方案和我平时的做法很不一样。我没有使用基准数据集方法,而是决定依赖外部数论专家。具体来说,我正在使用在线整数序列百科全书(OEIS) 来扮演一个数论神谕的角色。

OEIS 是一个由尼尔·斯隆创建和维护的整数序列的在线数据库。目前,它包含超过 350,000 个整数序列,在数论和其他数学分支中发挥着关键作用。业余和职业数学家都对 OEIS 很感兴趣。它被文献广泛引用,并且方便地,OEIS 提供了一个搜索工具,允许用户从一组样本术语中识别匹配的序列。这意味着它可以作为一种类型的数论**甲骨文,这正是我所需要的。

在我目前的研究中,我采用了如下所示的工作流程。例如,由于我一直在探索倒数和素数的各种性质,我经常产生我需要评估的新序列。我的方法是将这些提交给 OEIS,以搜索任何现有的匹配。如果匹配序列已经存在,那么这意味着我的结果并不新颖,但这也表明我正处于有趣的数论领域——有趣得足以让别人在我之前记录下这一发现——作为一个现有的序列,它的 OEIS 条目通常提供有用的指针来指导我的探索,例如它在其他研究领域的使用。

产生的许多序列都是这种类型——也就是说,它们已经存在于 OEIS——但偶尔我会产生一个不在 OEIS 出现的序列。当这种情况发生时,会非常令人兴奋。这暗示我可能发现了新的东西,下一步是提交给 OEIS 进行审查。审查过程将提供一个进一步的验证步骤,并可能以其自身的权利贡献额外的想法和建议,并且最终如果序列被接受,那么我可以满意地认为我对数论领域有所贡献。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JupyterLab 和 OEIS 之间的工作流程示例。图片作者。

为了以编程方式支持上面的工作流,下面的代码在 Python 中实现了两个有用的 OEIS 助手函数:一个是通过 id 查找序列,另一个是通过搜索匹配一组样本术语的序列,查找序列。这使得在不离开您的数据科学环境(在我的例子中是 Jupyter 笔记本)的情况下,很容易检查术语样本是否作为序列存在于 OEIS 中,这极大地增强了工作流。此外,如果对于给定的一组术语找到了匹配,那么通过返回匹配序列的摘要(id、url、描述和术语),就可以更容易地了解匹配序列的类型,并且它们提供的提示通常会指导我的后续步骤。

OEIS 查找/搜索代码示例。作者代码。

在最近的一篇文章中,我通过的方式讨论了对倒数的分析——形式为 1/d 的分数——以及它们的十进制展开的重复部分(重复)的长度(周期);比如 1/7 = 0.142857142857…所以它的周期( k )是 6,因为它的重复包含 6 个重复的数字(142857)。质数的倒数——形式为 1/p 的倒数,其中 p 是质数——的一个有趣性质是,它们总是服从等式n * k = p-1;换句话说, 1/p ( k )的周期是 p-1 的约数。

虽然这是一个众所周知的结果,但我对所有倒数 1/d ( 1≤d≤1,000,000 )的分析表明,虽然这个性质并不适用于所有的复合*(非质数)倒数,但它适用于某些倒数。例如,1/33 有一个十进制扩展 0.030303…,所以它的重复数是 03,周期是 2,2 被 33–1 整除。再比如 1/148,展开为 0.00675675…有 675 的重复数,周期为 3,3 被 148–1 整除。还有一些复合材料也具有这种特性:*

*33, 55, 91, 99, 148, 165, 175, 246, 259, 275, 325, 370, 385,...*

这个复合倒数序列是新奇的还是值得注意的?作为一个题外话,找到一个合数序列与素数共享一个属性总是很有趣的,特别是如果这个属性在合数中很少见的话。这样的数字被称为 伪素数 ,根据它们与素数共有的性质,有几种不同的类型。我的数据分析是不是把我带到了一种新型的伪素数?

当我在 OEIS 搜索这些术语时,我发现以前没有记录过这样的序列,进一步的网络搜索也没有找到任何关于它的明显讨论。我相当自信地发现了一个新的序列,我把它作为一个新条目提交给了 OEIS,果然,经过几天的审查,它被接受并批准为一个新的序列( A351396 ),这对我来说是第一次。

“合成数字 d,使得 1/d 的十进制展开的周期 k > 1 并除以 d-1”——a 351396

与此同时,我还考虑了这一序列的几个新变体——例如,通过排除与早期术语具有相同重复或相同时期的术语——这两个术语都不在 OEIS,并且都在审查中。

这篇文章的目的是解释我是如何思考我在数论中的经验探索的。数论是一个很有吸引力的应用领域,因为它很容易获得——高中数学足以开始,至少在一段时间内——还因为数据集和挑战性问题的可用性。然而,由于我不是该领域的专家,对我来说判断我是否在正确的轨道上是一个挑战:一个评估差距的典型例子。

我已经描述了一个实用的方法,我已经成功地使用它来弥补这个特殊版本的评估差距,通过使用 OEIS 作为一个数论先知。虽然 OEIS 不是万灵药,但它仍然可以提供非常有用的指导,尽管 OEIS 不提供传统的 API,但它相对简单地实现了序列搜索的自动化,从而消除了一些在典型的数据科学工作流中可能存在的摩擦。

弥合人工智能和人工通用智能之间的鸿沟

原文:https://towardsdatascience.com/bridging-the-gap-between-artificial-intelligence-and-artificial-general-intelligence-a-ten-e77c3084f9f7

类人智能的十诫框架

作者*😗Ananta Nair(1,2) 和 Farnoush Banaei-Kashani(1)
1。科罗拉多大学丹佛分校,2。戴尔技术公司

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Gert RDA valasevi it 在 Unsplash 上拍摄的照片

介绍

虽然人工智能(AI)的概念似乎是一个未来的前景,但创造人工智能的愿望长期以来一直是人类的愿望。追溯到大约公元前 700 年的古希腊神话是第一个机器人塔罗斯。塔洛斯是赫菲斯托斯神创造的,用来守卫克里特岛,向进犯的船只投掷石块。有一天,一艘船靠近了这个岛,这个岛,这个庞然大物自动机不知道,将成为他最大的挑战。为了逃离机器,船上的女巫美狄亚设计了一个巧妙的计划,并向机器人提出了一个交易;赐予他永生作为移除他唯一的螺栓的回报。令人惊讶的是,这一提议引起了塔罗斯的共鸣,他还没有掌握自己的本性,也不理解自己对诸如永生之类的人类欲望的渴望。虽然这个故事以这个巨人的悲剧告终,但它确实表达了人类长期以来对创造智能的渴望和恐惧,以及人和机器之间的模糊界限,这是一个今天日益突出的挑战。

从古代世界的机械玩具到科幻小说中若隐若现的反乌托邦世界末日场景,人工智能的创造和发展长期以来一直在人类的脑海中。尽管许多人会争辩说这个领域已经经历了许多爆发和萧条,但过去十年已经取得了迄今为止最显著的进步。这些进步很大程度上来自于深度神经网络,这些网络已经成为视觉、自然语言处理和强化学习等领域的专家(Brown 等人,2020,Ramesh 等人,2022,Chowdhery 等人,2022,Schrittwieser 等人,2020,Ye 等人,2021,Baker 等人,2019,Arnab 等人,2021)。它们的应用范围很广,商业和实际部署似乎永无止境。面部识别等应用程序(Balaban 等人,2015 年)在我们的手机和日常生活中找到了共同的位置;像 Alexa 这样的虚拟助手是从 IBM 的鞋盒(Soofastaei,2021)迈出的重要一步,它只能识别 16 个单词和数字;在线翻译器能够在任意两种或多种语言之间进行精确翻译(Fan 等人,2021),强化学习代理在棋盘和视频游戏等一系列复杂任务上实现了人类和超人的性能(Schrittwieser 等人,2020,Silver 等人,2018,Berner 等人,2019,Vinyals 等人,2019)。即使在学术界,这些工具也在一系列不同的努力中取得了重大突破,包括天气预测,蛋白质解折叠,心理健康,医学,机器人学和天体物理学(Ravuri 等人,2021,AlQuraishi,2019,Su 等人。al,2020,Lusk 等人,2021,Gillenwater 等人,2021,Pierson & Gashler,2017,Huerta 等人,2019,George & Huerta,2018)。

无可争议的是,这些事业中的每一项都因其独特的成就而值得称赞。然而,要达到类似于自然界的一般智能,这个领域还有许多工作要做。深度网络与 GPU 的进步合作,加速了数据处理,以掌握模式识别和其他基于统计的学习,监督和基于规则的学习,无监督和训练测试泛化,以及强化和多智能体学习(朱,2005 年,卡鲁阿纳和尼古列斯库-米齐尔,2006 年,萨顿和,2018 年,O’Reilly 等人,2021 年,莫利克等人,2020 年,贝克等人,2019 年,Stooke 等人,2021 年)。这些巧妙的数学算法和数据密集型处理技术通过将稀疏问题空间转换为密集采样,其分布可以被积分或过度拟合,从而在理想条件下取得巨大成功。这些网络甚至可以进一步转移到分布外学习,通过整合训练和测试集来实现这一点(Vogelstein 等人,2022)。然而,这种方法的一个常见副作用和日益严重的问题是创建了数据敏感的黑盒,这些黑盒难以在其明确定义的参数化之外进行归纳(Lake 等人,2017 年,Geirhos 等人,2020 年)。这些挑战使当前的人工智能工具成为伟大的优化器,但它们仍然达不到传统的智能。

相比之下,自然智能是进化工程的一个例外,人脑被认为是首要的例子。鉴于深度网络的最新成功但存在很大的局限性,人工智能领域现在比以往任何时候都更多地在神经网络能够做的事情和自然智能能够做的事情之间进行比较和比较(Vogelstein 等人,2022 年,Silver 等人,2021 年,Richards 等人,2019 年)。与人工智能不同,大脑不会在它试图最大化其奖励功能的绝望努力中,在每一项任务上展示或努力获得优异的表现。相反,它创造了卓越的通用学习者,这些学习者能够概括他们的抽象表现和技能,从而快速轻松地学习任何任务。这种方法不会在所有任务中产生卓越的总体表现,而是通过目标驱动的学习来调整行为,以创建一个只擅长高价值目标的系统,而其他任务的成功概率更低。这种类型的学习针对特定性能进行优化,同时留下足够的计算资源来充分执行所有任务。例如:运动员和士兵可能擅长需要场景整合、策略和身体或反射能力的任务,但是科学家不需要在这些领域中表现出色,而是可能在逻辑和推理上表现出色,或者在微调的运动动作上表现出色。虽然每个职业都可以学习其他职业的技能,但人们会根据与他们的目标一致的高价值目标来优先考虑他们的表现。

我们相信,这种基于创建一般目标导向的学习者而不是过度训练的特定任务代理的最大化架构学习的方法是更智能系统出现的关键。在本文中,我们使用大脑作为灵感,来识别我们认为对高阶认知至关重要的关键属性。介绍的下一部分将剖析大脑功能的组成部分,这些部分可以解决当前人工智能工具中存在的显著限制。鉴于导言的最后一节提供了框架的总体总结。接下来,第二部分阐述了我们认为导致智力的大脑功能的关键特性。这些被认为是十诫,我们相信智慧不是来自一个单独的戒律,而是来自一个包罗万象的系统,它的总和比它的一部分更强大。最后,第三部分阐述了如何将这些戒律引入到人工智能系统开发的框架中,从统计优势过渡到一般智能。虽然本文主要讨论的是可能导致类似于自然智能的自主人工智能的组件组装,但我们相信,在最终目标不是一个无所不包的系统的情况下,个人戒律本身有利于改进无数的人工智能系统和工具。通过戒律和框架的介绍,我们相信模型可以根据需要放大或缩小。

1.1 把大脑逗得散架;智力的悖论

许多深度学习模型在它们经过强化训练的任务上已经超过了人类的表现(Schrittwieser 等人,2020 年,Silver 等人,2018 年,Berner 等人,2019 年,Vinyals 等人,2019 年)。这导致一些人甚至认为,这些模型在抽象世界和执行战略前瞻的方式上类似于人类(克罗斯等人,2021 年,巴克纳,2018 年)。尽管这可能是真的,也可能不是真的,但可以同意的是,存在一个显著的相当大的限制列表,阻止人工智能工具展示使人类成为例外的一般学习者的流动智能。虽然人工智能存在许多问题,但我们认为最显著的局限性是:1)训练时间长(Schrittwieser 等人,2020,Chowdhery 等人,2022,Berner 等人,2019);2)无力绘制新的路径来更好地指导学习;以及 3)无法概括到新的或日益复杂、不确定和快速变化的领域(Poggio 等人,2019 年,Geirhos 等人,2020 年)。学习和保留特定任务数据的方案使深度网络如此成功,但也限制了它,因为它迫使网络使用计算密集型数据驱动的白板方法,而不是允许模型建立在它们所知道的基础上。这种僵化的问题不仅导致了长时间的训练,而且在复杂的领域中也导致了对这些网络的可信度和可靠性以及他们对所承担的任务的真正理解的令人生畏的调查(Geirhos 等人,2020 年,Hubinger 等人,2019 年,Koch 等人,2021 年)。

另一方面,人们相信自然智能,无论是人类还是动物,要么与生俱来,要么很快发展出先天知识,他们可以利用这些知识来建立越来越复杂的环境层次表示,并随着时间的推移而展开。尽管这种知识是什么,以及它是如何被进化编码的仍有争议,但它表明,自然智能并不遵循白板或白板方法(Wellman & Gelman,1992 年,Lake 等人,2017 年,Velickovic 等人,2021 年,Silva & Gombolay,2021 年)。此外,越来越多的人认为,大脑通过将世界分解成最小的组成部分来接受世界,尽管神经科学家不确定输入是如何处理以创建内部模型的。众所周知,这些最小的组件或概念通常被称为(van Kesteren 等人,2012;2017 年吉尔波亚&马莱特;van Kesteren & Meeter,2020 年)与日益增加的复杂性分层次地结合,以生成环境的内部模型。人们普遍假设,大脑能够通过将信息组织成抽象的整体梯度来做到这一点。这些梯度符合一个包含过程的关系记忆系统,如维持、门控、强化学习、记忆等。,不断地更新、存储、重组和回忆随着时间的推移而展开和加强的信息,以形成广义的结构知识(Whittington et al .,2019)。

智力的第二个支柱是将世界置于一个不断增加的复杂性和可操作的目标和子目标的关联框架中的能力(O’Reilly 等人,2014 年,O’Reilly,R. C .等人,1999 年,Reynolds & O’Reilly,2009 年,O’Reilly,2020 年)。正如 Hubinger 等人在 2019 年和 Koch 等人在 2021 年所争论的那样,当前的深度网络建立目标以分配给优化器,但是然后利用不同的模型来执行动作。这就产生了一个具有指定目标的优化器,然后这个优化器又优化了一个可以在现实世界中运行的模型。这种类型的架构不仅会导致创建者和被创建者之间的目标匹配问题,还会导致信任和可解释性的问题。例如:作者把一个代理人放在一个环境中,它必须找到并收集钥匙,用这些钥匙打开箱子并获得奖励。训练和测试环境之间的区别是对象的频率,训练集的箱子比钥匙多,而测试集的钥匙比箱子多。人们发现,环境中的这种简单差异足以迫使代理学习一种与预期完全不同的策略,即找到钥匙比打开箱子更有价值。这一结果的出现并不令人惊讶,因为代理人将钥匙视为最终目标,而不是子目标。因此,在测试中,代理不仅收集了比它可以使用的更多的密钥,而且还重复地在屏幕上显示的库存密钥区域上画圈。当部署在其训练集之外的环境中时,深度网络通常会看到这些类型的非预期策略,这导致了对深度网络输出的日益增长的关注和日益增长的怀疑。

另一方面,人类,甚至儿童,可以很容易地解决这个任务,因为他们使用策略的组合来决定他们的行动。当一个孩子被要求玩或观看另一个人玩视频游戏时,他能够仅基于几个学习实例来推断游戏的目的是什么,以及什么行为可以被认为是好的(奖励)或坏的(惩罚)。我们认为,幼儿的抽象水平很可能与训练有素的神经网络没有太大不同,即限制和定义抽象的复杂性和数据点可能具有相似的程度。例如:儿童将能够成功地识别他们与之互动的动物,但会像卷积神经网络一样与模糊的狗或猫的例子进行斗争。然而,儿童能够解决深层网络未能解决的任务的原因是由于以下技术的混合。虽然最初儿童可能有很高的错误率,但是他们能够通过以下方式快速学习:(1)利用学习技术的组合,例如由强化学习信号引导的指导、监督、自我监督、无监督、预测和试错学习,以形成他们环境的灵活表示,实现相同的结果,(2)利用相似性和不相似性作为基准,基于他们已经知道的对新的表示进行比较和分组, (3)询问探查性问题,例如如何、做什么和为什么确定状态转换,(4)建立和确定代理需要满足的目标和目的,(5)能够离线以新的和新颖的方式组合表示,以及(6)能够建立表示之间的因果关系。

我们认为,自然智能中出现的每一种学习策略都允许儿童在成年后采用他们所知道的抽象概念并构建复杂的模型。为了在一个例子中找到根源,让我们探索一个孩子将如何学习制作咖啡,或者在机器人学中经常被称为咖啡制作任务(Tsai 等人,2010)。儿童通过不断与他们的世界互动,发展灵活的运动和对环境的理解。他们不是从一种类型的训练中学习,例如有监督的或无监督的,而是利用不同训练技术和步骤的组合来达到相同的结果。这可能包括从指导中学习,观察别人,以及使用试错法。此外,通过利用多种但相互联系的形式如视觉、听觉、体感等形成的表征。有助于限制类别并形成更丰富的表示。对儿童来说,咖啡壶的表现包括视觉特征、其各种组件(如玻璃和塑料)的声音和感觉,以及赋予其容纳液体能力的形状和可拆卸顶部。我们相信表征的多模态表征的灵活性和丰富性对于允许更高水平的认知区域为世界构建复杂的表征和计划是至关重要的。

通过这个学习实现目标的过程,孩子会在内部或外部提出问题,以推理为什么以及如何执行特定的行动或导致特定的结果。这可能包括推理一个特定的物体是否足够大以容纳咖啡或水,以及应该使用什么样的步骤组合,首先装入咖啡或水。儿童进一步将环境的新表征与他们经历的过去表征进行对比。这可能意味着一些场景,例如将咖啡壶与其他盛液体的容器(如水瓶和水壶)进行对比,或者将它与他们过去见过或接触过的机器进行对比。儿童将使用这些表示以及指示的或自我施加的行动-结果配对来学习规则,这些规则可以形成更好更快的可操作计划。这种规则的一个例子可以包括将咖啡放在较小的容器中,而 12 杯咖啡需要较大容器中的水或 5 勺咖啡。我们相信,在任务的每一步中从现实世界中学习到的东西,将会产生一个比网络所能接收到的更加切实和有效的奖励信号。例如,如果孩子省略了添加咖啡的步骤或向机器中添加了过多的咖啡,他们将接收到比传统深度网络接收到的信号更明显的奖励或惩罚信号,从而促进更快的学习。这种学习既可以在线使用,以形成行动或结果之间的因果关系,也可以离线使用,在思考过程中模拟和简化行动,以在未来获得更快或更好的结果。

从神经学的角度来看,我们认为最大化学习的另一个优点,以及创造能够在大脑中跨任务域概括或转移的抽象概念的能力,是使用专门的专家。这些在结构上设计好的体系结构接受特定类型处理的特定输入,并产生在结构专家之间建立关联的功能输出。结构连接,顾名思义,是大脑中特定结构产生的连接,如灰质区域之间的白质纤维连接(Hagmann et al .,2008;伊图里亚-梅迪纳等人,2008 年;龚等,2009;Abdelnour,Dayan,Devinsky 等人,2018)。相反,功能连接与大脑区域之间的关系有关,通常不依赖于对潜在生物学的假设。功能信号是指随着时间的推移,大脑区域对的强度和激活。如果在记录的时间内区域的活动之间存在统计关系,则表明区域具有功能连接性。它可以被解释为两个或多个神经生理时间序列(如从 fMRI 或 EEG 获得的序列)之间的时间相关性和无向关联(Chang & Glover,2010;Abdelnour,Dayan,Devinsky 等人,2018)。如下所述,这些结构和功能表示可以跨由特定约束定义的级别以越来越大的复杂度进行分级处理。结构和功能连接在实现抽象和随后的大脑高级认知方面发挥着不同但相互作用的作用。我们认为,这种划分知识用于训练的方法是性能和泛化的关键优化器。

1.2 组装大脑;框架路线图

如上所述,除了确定自然智能的关键属性外,我们还提出了一个框架来容纳它们,即十诫。这个框架的一个定义性特征是,它不是从一个单独的戒律中汲取力量,而是从一个系统中汲取力量,这个系统将所有的组成部分结合起来,使之比其各个部分更加强大。从本质上讲,我们认为大脑的运作基于可以分离和计算的基本原则。然而,正是这些原则错综复杂的相互作用导致了智能,而智能是很难隔离和定义的。本文的目的是确定这些基本原则,并提出一种执行智能的计算方法,以通知智能和自主人工智能的下一波浪潮。

我们模仿大脑中的优化和认知控制,将信息组织成两个层次的专家回路:内部和外部。这在很大程度上受到了全球工作空间理论(Baars 1993,1994,1997,2002 和 2005)和认知控制层次理论(Cushman & Morris,2015,O’Reilly 等人,2020)的启发。这种层次结构驱使行为从一个共享系统中出现,在这个共享系统中,内部循环与处理和完成特定任务相关联。这可能包括学习如何制作咖啡或其他任务,如导航,语言或翻译,以及信息分析。而外环执行整合内环信息的功能,以实现更复杂和更长时间尺度的认知(O’Reilly 等人,2020)。例如,这可以包括将制作咖啡的过程简化为最有效的策略,将以前制作咖啡的知识转移到新的机器上,或者甚至将以前制作咖啡的知识转移到其他饮料如茶或热巧克力上。类似地,在其他任务中,它可以包括导航到不同的目标,确定它知道和不知道的语言之间的相似性以理解单词,甚至超越统计决定论,为信息分析提供上下文化和个性化。

为了简单起见,如图 1 所示的框架被分成三层,每个层有一定数量的专家。尽管为了说明的目的选择了具体的数字,但是我们相信可以有 n 个层,具有 nm 个专家。唯一的条件是内循环和外循环必须以相同的层数和每层相同的专家数相互模仿。这是因为外部循环是内部循环的模拟,只整合了内部循环中最显著的或奖励门控的信息。在大脑中,由于没有重复的区域,相同的大脑区域执行两个环路的角色。然而,为了更好地解释和透明,我们将循环复制到两个独立的实体中。诸如导致奖励或惩罚的门控表示以及由内部循环记录的环境中的显著事件或物体被传递到相应的外部循环专家和层。所有的任务都是如此,因此外部循环可以整合和巩固最相关的表示。外部循环的处理包括细化表示以开发更好的计划,重新组合表示以创建新的和新颖的动作,以及对内部循环施加自上而下的影响以改进实时处理。

对于这两个循环,每一层都接受许多专家的意见,这些专家是特殊的体系结构,具有最大限度地提高特定特性(例如:视觉、听觉、体感等)性能的属性。).来自结构专家模型的信息以公共语言进行处理和输出,该公共语言可以通过层中的横向连接进行集成和约束,以促进多模态表示。比如:约束一个咖啡机的形象,用冲泡咖啡的声音,形成一个更复杂的咖啡机品类。这种相同的处理可以应用于各种不同的领域,包括猫和狗的分类任务,其中狗或猫的图像受其声音和体感特征的限制,以形成更复杂的类别来识别动物。最终的公共语言输出是该类别的函数表示,并且包含跨多个结构专家的最终核心约束信息。如上所述,这可以包括由横向连接的专家确定的类别的复杂多模态表示。从第一层输出的功能信息被输入到第二层的结构专家中,他们反过来使用这些信息来创建更复杂的功能表示,以输入到第三层。该过程可以在层级的每个增加的级别上进一步重复。例如,第一级的处理可能导致形成多模态表示,而第二级的处理可能导致场景整合和动作建议,最后,第三级的处理将涉及基于预测和动作执行来评估动作。

内部和外部循环都以这种分层方式运行,仅有的两个区别是 1)形成的抽象级别和发生的处理的复杂性;以及 2)只有内部循环与真实世界交互,外部循环只能通过内部循环的自上而下的影响间接地这样做。当一个特定的行动-结果配对或一系列行动受到奖励,一个突出的或意想不到的事件发生,或给予一个大的惩罚时,系统通过门控信息进行学习,训练好的表征,训练坏的表征。然后,来自各个内部循环层的这些门控输入中的每一个被传递到相应的外部循环层,以便以更慢、更集成的方式保留、改进和重新组合表示。这个过程允许对动作进行分组,以创建更灵活的可概括的表示,这些表示可以在将来应用于相同或类似的任务。然后,外部循环可以使用这些表示对内部循环施加自上而下的影响,以更快地行动或使用新的行动组合。例如,如果经过反复试验,一系列动作成功地调制出咖啡,那么这个过程中涉及的所有表示都将被选通到外部循环中。然而,当内部循环重复任务时,外部循环将学习精简所有门控表示,以建议内部循环仅采取导致最快奖励的一组动作。

此外,为了更好地指导行为,框架的输出被结构化为目标导向的,被描述为全局 F(X) 函数,其中 X 被最大化用于特定目标。为了进一步调优系统,还使用了其他约束,如注意、维护和门控。该系统创建多个目标,每个目标被优化为特定的行为策略(例如如上所述制作咖啡,在饥饿或需要资源时获得食物或电池充电,以及在躲避天气因素时获得庇护)。这些目标中的每一个都通过使用注意力来关注最相关的信息,并通过门控和维护来鼓励系统保留该信息,从而最大化一系列导致奖励或惩罚的行动。然而,应该注意的是,不给予目标的优化和系统的外部循环完全控制,诸如注意力之类的约束可以重定向模型以关注更紧迫的目标,这些目标是时间敏感的或者可能威胁系统的整体健康的显著环境事件。例如在寻找食物时有捕食者出现,或者在煮咖啡时厨房里有火。

最后,可以被称为记忆的信息的学习、保持、提炼和重组由动态模型来表示。我们认为,与计算机科学不同,记忆不是一个静态的信息术语,而是一个动态的实体,它包含各种过程,如存储什么,训练和学习什么信息,以及如何随着时间的推移改变、重组和完善表示。在我们的框架中,每个专家都被表示为一个动态模型,其记忆或表示存储在专家内部的本地级别,而全局存储为跨一层和跨所有层的所有专家的累积。然而,与静态数据不同,这些存储器或表示在内环或外环中的在线或离线处理期间根据需要不断更新、改进或重新组合。最后,由于它们的统计能力,机器和深度学习技术被用作理解和优化这些动态模型的非线性的手段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1: 十诫框架图

大脑功能的十诫

I)大脑使用在多种形式上受过训练的多名专家,这些专家在横向上相互影响

与传统的计算技术不同,大脑有一个非常丰富、复杂和多模态的学习环境。例如:人类不只是将狗的类别作为视觉表征来学习,而是一个多维阵列,包括多种感官,包括听觉(吠叫)、嗅觉(麝香味)、体感(皮毛感)等。这些表示每个都由独特的专家构建,该专家基于特殊的结构分析来处理信息(例如:通过听觉皮层对听觉输入进行傅立叶分析,或者通过视觉皮层对视觉输入进行边缘、颜色和纹理检测)。尽管这些不同形态的专家针对其特定角色进行了优化,但他们有能力横向影响彼此,以帮助微调表示,并鼓励专家之间的激活绑定到同一对象/类别(O’Reilly & Munakata,2000,Herd 等人,2006,Munakata 等人,2011)。

这种拥有多个专家的能力允许更好地定义输入、损失函数、处理和输出的生成,其中每个专家都专门用于特定类型的处理。这种架构还允许在网络输出的生成中有更多的可解释性和透明度。此外,让专家横向影响其他专家的能力允许创建更丰富的抽象,这些抽象被约束在多维模态之间,从而导致高度调整的局部和全局表示。受全球工作空间架构(Baars 1993、1994、1997、2002 和 2005)的启发,这种多模态技术已经开始被纳入深度网络,如拉德福德等人,2021 年,戈亚尔等人,2021 年,本吉奥,2017 年,以及德阿纳和库德,2021 年。此外,CNN 的横向连接(Pogodin 等人,2021 年)也被用来展示改进的性能。

II)大脑使用稀疏分布式表示和双向连接

进化的首要目标似乎是减少面对噪音时的不确定性。自然智能必须驾驭现实世界外部和大脑内部的噪音。大脑使用大量的噪声,神经元必须学会选择性地训练,以确保只有一组专门的神经元在阈值以上活跃,对线索做出反应(Bear 等人,2020)。虽然变得活跃的神经元是高度调谐的,但它们也是灵活的,一个或两个神经元在序列中失败不会导致一个人无法执行任务(罗尔斯&特雷韦斯,2011 年,拉德福德等人,2021 年)。

稀疏分布式表示是大脑用来确保对输入进行分类的多种不同方式同时有效的技术,例如跨专家。这些表征在大脑不同层次和区域的连续激活被认为是智能行为出现的主要驱动力(Beyeler 等人。al,2017,Nair,2021,Ahmad & Scheinkman,2019,Ahmad & Hawkins,2016)。此外,双向连接使用这些稀疏的分布式表示,让许多大脑区域的神经激活共同工作,以编码复杂的表示和抽象(O’Reilly 等人,2012 年)。

双向连接对于多重约束满足、注意力和吸引子动力学也是必不可少的。通过允许网络稳定,它允许创建一个稳定和干净的噪声输入表示(O’Reilly,Munakata,Frank 等人,2012)。然而,这种机制显然被下面讨论的学习动力进一步加强了。一些人工神经网络架构已经开始利用这些技术,如 Grewal,2021,Hunter 等人,2021。

大脑使用抽象概念

虽然我们对大脑实现飞跃的神经过程知之甚少,但许多人怀疑魔法在于它创造的抽象类型(van Kesteren 等人,2012;2017 年吉尔波亚&马莱特;范·凯斯特伦&迈特,2020)。大脑是一个优化的一般智能系统,它被认为能够通过创建灵活的知识结构来快速和动态地学习,这些知识结构可以以新的和新颖的方式进行组合、重组和应用。这些知识结构允许生物体通过有效地分解复杂的输入并将信息编码成许多小块或抽象的心理结构来摄取世界。这些抽象然后被内部处理以构建被解释的现实的内部模型。虽然对模型输入的进展没有很好的理解,但人们普遍假设大脑通过组织成抽象的全局梯度来做到这一点(Taylor 等人,2015;美素拉姆,1998 年;琼斯&鲍威尔,1970)。

这种将信息组织成抽象的全局梯度,并且在此基础上的学习操作可以被认为是连续吸引子模型(Whittington,Muller,Mark 等人,2019)。在这种框架中,随着信息的获取,吸引子状态通过错误驱动学习稳定为共同的吸引子状态,具有噪声输入模式的清理后的稳定表示(O’Reilly 等人,2012)。出现的稳定表征利用自组织学习来反过来构建知识结构和系统,从这些知识结构和系统中可以出现复杂的认知。这种跨层级的表示的建立允许信息从输入按比例增加到认知的顶点层,例如推理、意识和其他更高级认知的有形行为。此外,结构和功能连接都是重要的部分,它们在大脑中扮演不同但相互作用的角色,以实现抽象和随后的更高层次的认知(Nair,2021)。

虽然起源于神经科学,但抽象形成和吸引子动力学的假设对人工智能社区具有很大的影响(等人,2018,任等人,2019,,2018,Ilin 等人,2017,Ashok 等人,2020)。虽然还没有完全理解在深度神经网络中形成的抽象概念在何种程度上类似于大脑,但它确实是当前和未来研究的基础。

IV)大脑使用等级系统

长期以来,人们一直假设认知行为存在于一个层次结构中,在这个层次结构中,抽象通过增加维度级别来慢慢组合,从而达到更高层次的表示。(博特维尼克,2008;巴德雷&尼,2018;D’Mello 等人,2020 年)。根据包括 Taylor 等人(2015)在内的许多神经科学家的说法,金字塔结构的最低层代表视觉、听觉和体感等输入,而最高层代表意识、想象、推理和思维。

随着抽象表示在内循环和外循环的层次中建立起来,跨处理区域的信息最终被转换成一般化的知识结构。在这个层级中,特定的大脑区域或专家以不同的复杂程度和维度局部地容纳结构表征,而它们跨层的整合激活导致相应的专门化功能表征。这些表示可以被优化,以在内部循环中为手头的任务构造动作和计划,或者被馈送到外部循环中,以随着时间的推移创建甚至更复杂的高维度抽象,这可以创建长期目标、结果以及最终的世界模型。此外,该信息通常可用于优化内部循环和长期认知。这些局部和全局层中的每一层都有可能通过在不同分析级别上运行的约束满足来组织成一般化的知识结构。

虽然深度网络的当前技术水平确实利用了信息处理的层次结构(Murdock 等人,2016 年,Qi,2016 年,Kriegeskorte,2015 年),但据我们所知,它们不包括使用专家创建类似于大脑的多层分析。我们认为,这种缓慢建立的语境化专家知识赋予了大脑一些认知能力。

v)大脑有专门负责的区域

正如《戒律一》中所建议的,大脑学习创建多模态表征,这种表征可以被多种模态的多位专家所约束。尽管深度神经网络已经开始利用专门的模型进行多模态任务(拉德福德等人,2021 年)或强化学习中的多个头部(Schrittwieser 等人,2020 年,叶等人,2021 年),但大脑在结构层面上优化其输入方面要专业得多。举例来说,仅在视觉处理领域,大脑就有一个处理信息的专门区域层级。

例如:初级视觉皮层或 V1 等较低的大脑区域被优化来处理边缘。而像 V2 这样的地区获取这些信息,并对其进行更高层次的处理。这可以包括确定颜色、纹理和背景-前景检测。在这些层之外,信息被进一步特殊化,分为“什么”和“哪里”路径,并且信息基于类型跨路径分布。“什么”层级的顶部是代表完整对象的下颞叶皮层(IT),“哪里”层级的顶部包括基于诸如注意力、维持和奖励等约束来引导迅速扫视或眼球运动的区域。通过自上而下的影响,这些相同的约束被进一步施加到较低水平的“在哪里”路径上。我们认为,这种自上而下的影响导致约束(如关注、维护和奖励)以不同的方式体现在我们框架中不同的结构专家身上。

VI)大脑有需求,但也有目标、需要和欲望

自然世界中的生物是目标导向的,很可能源于进化本身。人类和动物都有需要,必须满足这些需要才能延长生存时间。当一个特定的需求被激活时,它被转化为一个目标,这个目标动员系统集合行动以获得一种特定的回报。虽然行为并不总是以目标为导向,如在探索或试错策略中所见,但即使在这些情况下,通过将突出的事件置于专注于目标的行动-结果对中,也可以学习到突出的事件,这些目标可以在以后利用。

另一方面,深度神经网络不会像人类一样将世界规划成可操作的目标,因为它们不会面临相同的环境和资源压力。虽然可以说深层网络有他们需要达到的目标,但通常他们的生存和健康并不直接依赖于它。人类和动物从他们周围的世界快速学习,不仅因为他们可以形成灵活的多模态表示,用于在世界上行动,而且因为他们学习的训练信号更有效。例如,吃错食物或不注意捕食者会对活的有机体产生可怕的后果,而深度神经网络会收到惩罚信号并重新开始游戏。由于这种生存偏见,大脑有大量的不动产用于处理和学习负面信息,并通过多巴胺途径预测奖励的消失(Mollick 等人,2020 年,Schechtman 等人,2010 年,Pignatelli & Beyeler,2019 年)。因此,这表明大脑被优化来微调学习以满足生存需求,无论是在持续实现相关目标还是在几次接触中从负面事件中学习。

虽然目标很重要,但它们不是绝对的。一个特定的目标可以优先指导行为,然而,如果一个不同的显著事件将注意力引向另一个目标,那么追求这个相同的目标可以在背景中维持。例如:如果动物正在寻找食物,饥饿的目标是指导行为以最大化食物,然而,如果一个突出的事件引导注意力,如附近捕食者的位置,食物的目标将保持为子目标,而逃离预测者的新目标将主导行为。在将完成一项复杂的任务分成更容易实现的子任务时,子目标也非常重要。

此外,与深度神经网络不同,除了目标,已知至少人类有需求、想要和欲望。我们认为这是制定奖励和实现时间目标的动机成分的表现。需求可以被认为是生存所必需的可操作的项目,一旦被激活,就会产生一个需要在短时间内实现的目标。另一方面,欲望是不直接与生存相关的需求,因此不会被迅速追求(例如:想要一块巧克力)。最后,愿望是更复杂的目标,需要满足多个子目标,对时间最不敏感(例如:想去托斯卡纳旅游)。这些需求和欲望很可能只在人类或可能具有更复杂认知能力的动物身上看到,以驱动系统获得新的或更好的奖励,这些奖励目前并不存在或对生存至关重要。据我们所知,这种类型的建模尚未在传统的深度网络中完成,仅在其他人工神经网络中部分完成(Herd 等人,2021 年,O’Reilly 等人,2010 年,O’Reilly 等人,2014 年,O’Reilly 等人,2020 年)。

VII)大脑不仅仅是强化学习

尽管强化学习可以说是大脑用来学习世界的一个不可或缺的重要部分,但它不是唯一用于学习的机制(萨顿和巴尔托,2018 年,

加里埃皮和拉。,2014,O’Reilly 等人,2021,Doll 等人,2009,Mollick 等人,2020,Liakoni 等人,2022)。传统的深度学习网络使用类似于大脑中发现的基底神经节和皮质纹状体和中皮质多巴胺系统的演员-评论家系统(Mollick 等人,2020 年,Herd 等人,2021 年,萨顿和巴尔托,2018 年,Schrittwieser 等人,2020 年,Silver 等人,2021 年)。在该系统中,行动者接受国家的输入并输出最佳行动(或政策),而批评家通过将其与国家价值函数进行比较来评估行动(萨顿和,2018,李,2017)。

虽然强化学习是大脑正在做的事情的一部分,但它是通过利用无数复杂的专门架构来实现的。例如:OFC 被认为负责刺激的情绪和动机值,ACC 对冲突和错误监控很重要,DLPFC 对复杂的高阶信息处理很重要,PFC 对整合来自这些区域的输入和与基底神经节环路协调以促进行动反应很重要(O’Reilly,2010,Droutman 等人,2015,Bear 等人,2020,O’Reilly 等人,2012)。与传统的深层网络相比,大脑具有更加复杂的层次和专门的架构,允许处理定义奖励的不同特征。这些专门区域通过四个核心机制被进一步驱动学习;1)在复杂性上分层构建的专用架构;2)自上而下的影响和约束条件的使用,例如关注、维护和奖励,这些约束条件以不同的方式在不同的级别和专家之间表现出来,以迫使系统改进其学习和输出;3)使用预测学习作为一种机制,基于系统所知道的来预测一个动作将具有的结果;以及 4)利用一系列不同类型的学习,例如监督的、自我监督的、非监督的、预测的、指导的、镜像的、试错法,来训练和定义它的奖励信号,以便它能够更好地理解世界。

我们相信,使用受注意力、维护和门控约束的组合学习的巨大好处导致利用不同的技术来约束系统,以形成相同动作结果的不同但重叠的表示。这有助于创建更灵活的、可以概括的表示。这一点在机器人学习中已有一定程度的体现(陈等,2021)。此外,将奖励训练作为实现特定目标的手段有助于情境化学习,以便不同的奖励可以被不同地看待,例如:在人类中,饥饿时吃食物的奖励与购买第一套房子的奖励是不同的。据我们所知,这还没有在深度网络中尝试过,但是我们相信这将对更好的情境化学习有很大的帮助。

VIII)大脑使用串行架构或串并行架构

人们认为,决策或复杂的认知在人脑中并不是并行运作的(Herd 等人,2021 年,O’Reilly 等人,2020 年,Hayden,2018 年,Hunt 等人,2018 年,Herd 等人,2022 年,已出版)。思考这个问题最直观的方式是,由于大脑有专门的结构或专家专门研究信息处理的特定组成部分,所有不同层次的专家不可能同时参与进来。相反,当信息输入大脑时,它会在多次迭代中依次展开。层次结构第一层中的大脑区域很可能学会在并行操作中处理输入,然后将合并的表示连续传递给第二层专家,依此类推。在这个过程中,信息由相关领域并行地进行系统处理,然后被串行通信,以创建更复杂的抽象、计划和内部模型。另一方面,传统的深度网络并行处理多个信息流,以最大化 GPU 架构。虽然他们有一些专业化,需要进一步进入模型的串行处理,但它与大脑有很大不同(金等,2020,邓,2011)。

据信,将信息编码到网络中的串行方式和特定层中专家之间的并行处理也是大脑如此适应复杂决策的原因。与此相似的是决策的有声思维协议(Herd 等人,2021 年,Herd 等人,2022 年出版)。为了完成一个复杂的面向目标的任务,我们通常把它分成更小的连续步骤,只处理与这些步骤相关的信息。比如:计划旅行的时候;第一步包括汇编一份运输选择清单;第二步包括在我们的时间限制内选择哪种运输方式;第三步是比较成本;第 4 步需要预订最佳选项(Herd 等人,2021)。有趣的是,这种相同的串并行处理方式也适用于学习新材料。例如:作为新手学习广义相对论时,第一步包括学习简单的概念,如什么是行星?什么是太阳?什么是太阳系?;步骤 2 利用这些信息输入来建立更复杂的假设和抽象,例如什么是轨道或什么阻止这些物体相互碰撞,即重力;步骤 3 阐述了空间、时间和时空的概念;第四步讲述了什么是广义相对论。

我们认为,随着时间的推移,随着信息的连续展开,这种分层次建立复杂表征的方式是高阶认知的一个重要组成部分。此外,能够在不同抽象层次内部查询表示的过程,使用诸如何时、如何和为什么的陈述,允许我们更好地指导我们的学习,以形成更好地提炼和巩固表示并引导注意力的因果推理。神经科学的一些研究进一步表明,动物记录在评估选项时发现了串并行架构的使用(Hunt et al,2018)。最后,尽管串行-并行架构对于学习来说是最佳的,但人们认为,通过在实践良好的任务中使用并行架构,大脑可以随着时间的推移而优化(Herd 等人,2021 年,Herd 等人,2022 年出版)。

大脑思考和推理

我们认为,人类和机器性能之间的一个重要区别因素来自思考和推理的能力。我们发现,幼儿很可能像当前的人工智能工具一样,开发简单的抽象概念和世界的内部模型,使它们只与他们训练的东西一样好。然而,在发展的过程中,儿童可以把他们所知道的东西,重新组合和提炼,以建立越来越复杂的成人对世界的描述和模型。我们相信这是可能的,因为人类有能力思考,或在他们的代表空间中漫步。人类和人工智能工具一样,也有计算或物理约束。例如,他们不能在世界上连续行动,例如,饥饿时无休止地寻找食物,口渴时无休止地寻找水,最终会耗尽他们所有的能量,导致死亡。相反,人类在精神上制定复杂的计划,然后选择他们应该在世界上执行哪些行动。这种在头脑中模拟世界的能力不仅允许我们组合我们已经学会应该配对在一起的表征,还允许我们组合新的表征。

就像一个神经网络可以用它的非策略来影响它的策略一样,人类也可以离线,结合表现来影响在线行为。在我们的框架中,当系统选择参与思考时,它可能会通过减少内环感觉机制(视觉、感觉、听觉等)的约束影响而离线,即较少的注意力、维护和门控被导向感觉输入。然而,内环低级感觉区域上的约束可以容易地响应于世界中高于阈值的显著刺激而被重新接合。通过减少对世界输入的关注,该系统可以将计算处理引向已经在系统的更高层次中形成的抽象。当系统在一个时间敏感的上下文中思考它正在解决的当前任务时,只有内部循环中的抽象是可用的。这包括与任务相关的抽象,以及来自外部循环的任何抽象,这些抽象先前已经被提炼以影响内部循环的行为。外环中的主动处理很像内环中的感觉区域,通过减少约束的影响可能会脱离。相反,当系统选择进行时间不敏感的思考或目标不敏感的思考时,通过减少对内循环或当前环境的关注,主动处理可能只发生在外循环中。然而,这种将处理限制在内循环或外循环的操作并不完美。当内部循环中注意力和其他约束没有被正确地施加时,系统将重新激活外部循环,并引入可能与任务不相关的新抽象,并对及时处理造成干扰。例如:在解决家庭作业问题时考虑午餐。

还应该注意的是,走神,即在没有目标强烈影响的情况下在表征空间中搜索,是可能的,因为所施加的约束是不完美的。当一个特定的任务是时间相关的,但是当前的抽象不能集中在一个解决方案上时,诸如注意力、门控和维护等约束不能对系统施加适当的支配。这导致系统在内部和外部循环表示之间徘徊。例如:当最后期限即将到来并且无法找到复杂问题的解决方案时,施加在内部循环上的约束会疲劳,并导致系统在两个循环中的表示空间中漫游,直到系统可以恢复并且可以再次正确施加约束。约束减弱的原因可能是由于系统缺乏收敛而导致的指数级资源消耗导致的计算疲劳。

这些心理模拟、记忆回忆和可能的走神机制都是默认模式网络的一种描述(Schacter et al .,2012,Zhou & Lei,2018)。一些研究还表明,这种相同的默认模式网络在睡眠期间也是活跃的(Horovitz 等人,2009 年,Sä mann 等人,2011 年,De Havas 等人,2012 年)。系统在睡眠期间离线或完全脱离的能力可能是必要的机制,允许信息的提炼和整合,以及抽象的灵活组合,从而导致更复杂的行为,如想象力、创造力、解决问题和概括(Rasch & Born,2013 年)。在走神期间,我们相信约束对内循环所有层面的影响都大大降低了。然而,另一方面,在睡眠期间,我们认为只有外环的较高层次是可用的,这就是为什么梦在最抽象的领域运作。最后,我们认为,当一项任务对时间不太敏感时,只有外循环在起作用。例如:当计划如何度过一个周末时,系统现在可以组合不同的和新的表示组合,而没有与任务相关的联系。

推理是思维的一个组成部分,它是一种机制,允许系统更好地指导和改进在表征空间中的搜索。我们相信推理是表达之间因果关系的公式化。虽然早期学习很可能是由简单的手段驱动的,如相似性和不相似性、模式匹配和强化学习,因为更复杂的机制如预测学习形成了,但系统很可能使用与目标相关的内部查询过程来将世界情境化并形成偶然的关系。这些内部查询过程将使用诸如“如何”、“为什么”和“何时”之类的语句作为假设测试行动-结果对、世界的变化以及行动与目标的相关性的手段。据我们所知,这样的思考和推理机制还没有在深度神经网络中被考虑或实现。然而,使用 SAT 解算器和想象力蒙特卡罗树搜索展开的硬编码推理外循环的示例已经实现(Ye 等人,202,Chen 等人,2019,Schrittwieser 等人,2020)。其他受生物学启发的模型包括 Russin 等人,2020 和 Russin 等人,2021。

x)大脑与其他大脑协同工作

**“人多力量大”早有说法。这同样适用于构建更好的想法,或者更聪明的文明。人们不会在内部架构之外孤立地学习,他们会从丰富的多模态环境和其他环境中学习(巴塞特&马特,2017)。人类有专门的镜像神经元来模仿周围世界中的个体所采取的行动。当我们考虑在世界上实施这些行动时,以及当我们实际行动或被指示行动时,这种通过模仿学习也传播相同的途径到火(Heyes,2010)。此外,除了合作动态,竞争的作用也在驱动系统更好更快地学习表征的压力方面发挥了重要作用(Pinto 等人,2017,Baker 等人,2019,Sanchez,2017)。我们相信在学习过程中融入社会因素将会创造出一个更好更快的系统。

最近,多代理学习的使用已被纳入深度学习网络,并取得了巨大的成功。最显著的例子是 Open AI 的捉迷藏代理,Deepminds XLAND 代理(Stooke 等人,2021,Baker 等人,2019),他们已经证明了一系列复杂的涌现行为。在机器人技术中,人类训练和人机团队以及竞争与合作实验已经证明了更快和更有效的学习(Chen et al .,2019,Pinto et al .,2017)。

组装十诫框架

如上所述,我们的框架提出了一种将十诫融入一个系统的方法,这个系统可以通过数学和计算来执行。戒律相互建立,导致行为的出现,这种行为比它的单个组成部分更有力量。然而,应该明确指出的是,该框架的目的并不是提出一个解决问题的绝对解决方案,而是启发未来的架构和讨论,这些架构和讨论也可以建立在这些优势的基础上。

如上所述,该框架由两个层次循环组成;一个内环对应于处理手头的任务,一个较慢的更具整合性的外环在较长的时间框架内收集信息(O’Reilly 等人,2020 年,Cushman & Morris,2015 年,Schneider & Logan,2006 年)。为了首先组装内部循环,层次结构中的每一层都由专家构建。如图 2a 和 2b 所示,三个专家网络 (x1,y1,z1) 协同工作,组装出第一级G1(x)=【a1(t),b1(t),C1(t)】的输出。尽管可以使用任意数量的专家,但是他们必须遵守三个定义规则;1)每个专家被设计成只完成一种类型的处理(例如:视觉处理、听觉分析等。),2)层中的专家必须横向连接,以及 3)来自每个专家的信息输出是可以在整个体系结构中表达的公共函数格式(即,全球通信语言)。

如图 2b 所示的三位专家 (x1,y1,z1) ,他们本身都是数据驱动的非自治动力系统【ẋ】*=f(xtuβ )。每个专家都有自己的一套描述其动态系统的变量,其中 f 代表动态(即,给定一个状态,系统在下一个时间步如何变化);x代表状态, t 代表连续时间, u 代表控制输入, β 代表参数(Brin,& Stuck,2002)。对于每个动态模型, *x,u,β 将是向量,其中, x 是系统的状态, β 是系统的不同多模态输入。这些输入可以是视觉系统的亮度、颜色和对比度,听觉系统的锐度或音量,以及躯体感觉系统的纹理、粗糙度和温度。在更高层次的分析中,如下所述,这些输入可能包括预测值、误差信号、发动机动作、建议计划或任何改变系统动态的因素。向量 u 将是对系统施加的不同控制,包括注意、维护和信息门控。这些控制对系统施加影响,并且我们相信随着时间的推移,系统将通过支配性的 f(x) 目标函数以及强化信号来学习。当网络收到对行动-结果对的奖励时,注意力将是一种对场景中相关显著刺激的紧急控制,这将影响记忆中信息的保持和门控。最后, 将是代表系统动态的微分方程(或向量场)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2: a)表示一层内循环的框架,b)表示下面给出的一层内循环的数学解释。

令人满意的是,通过使用数据驱动的动态建模方法,该框架远离了传统的机器和深度学习架构。然而,我们认为,由于其统计能力,当前的深度和机器学习网络对于成功找到理解系统动态的可解释解决方案至关重要。输入系统的数据会因专家而异,但数据来自自治系统的假设是正确的。为了网络学习模型的传播,每个专家的数据将被组合成一个初始的无价值问题。这些深度学习技术的统计能力的最大好处应该是有助于确定未知的 f 函数,在混沌中转移,以及找到坐标变换或新的坐标系,使得变换使非线性动力学看起来是线性的。稀疏回归或库普曼分析等技术已经开始使用(布伦顿等人,2016 年&。

随着机器学习掌握了统计空间,这些方法将成为应对非线性动态模型带来的诸多挑战的主要工具。未知和非线性 f 函数、不确定性和混沌以及潜在和隐藏变量等挑战可以重新表述为优化问题,其中机器学习模型可以针对数据进行优化(Brunton 等人,2022 年,Lusch 等人,2018 年)。在我们的框架中,机器学习模型可以在本地实现以理解每个专家的动态,并且在全局确定框架的总体输出,即用于创建反馈控制的所有动态模型专家的集体系统。这将需要专家根据输入进行优化,并实时主动操纵系统的各个部分,将参数转换为执行器,执行器将模型转换为反馈控制回路。虽然这种方法将在下一代人工智能工具的开发中提出新的挑战,但我们相信它将导致更透明和可推广的网络。通过使用由专业专家组成的框架,可以更好地约束投入和产出,并开发专家专用的透明度工具。调试和再培训专家将比当前具有更复杂的输入、输出和集成结构的网络更简单。此外,由于动态模型了解系统的潜在动态,即系统为什么以及如何变化,我们认为它们应该更容易适应新的和未知的情况。已经表明,动态模型对未经测试的参数进行概括,例如牛顿第二运动定律(Brunton 等人,2016 年)。我们相信这些可概括的特性也应该适用于这个专家的集体框架。

当用矩阵符号表示时,特征值揭示了一个动态系统将随时间做什么,或者更好地作为这些系统的解决方案。系统通常是正的、负的和虚的特征值的组合。负值表示减少和衰减或稳定系统,正值表示增加和爆炸,或不稳定,虚值表示振荡或错误和冲突。这些负特征值可能表示随机活动的减少和网络上稳定吸引子动力学的形成,而正特征值可能表示随机活动的增加和混沌和不稳定吸引子表示的形成。最后,虚特征值的作用可能会延伸到系统某些部分的激活错误,这可能会导致不正确或延迟的回忆。这可能会导致活动无法使正确的吸引子状态完全激活,从而导致诸如记错类别名称或错误地回忆过去信息等情况。

第二种技术和特征值的使用是图论,我们认为这是理解抽象、吸引子状态和创建一个跨框架的全球语言的关键。因为机器和深度学习方法可以帮助提供对底层系统的分析,以及找到用于将非线性空间转换成线性空间的数据驱动解决方案。我们相信图论及其子成分谱图论可以用于确定和理解这些系统中的知识成分。如上所述,像大脑这样的动态系统是连续的吸引子模型,它们组织成可以不断更新和重组的全局梯度。随着信息的输入,这些吸引子状态稳定为共同的吸引子状态,这些吸引子状态使用学习来创建稳定的表示,随着时间的推移,可以建立知识结构和系统(O’Reilly 等人,2012 年,Nair,2021 年)。通过双向和横向连接产生的分布式表示是确保这可以跨多个地区或专家发生并推动智能行为出现的关键(Nair,2021,O’Reilly 等人,2012)。在我们的框架中,每个专家都将配备所需的层内和跨多层的横向和双向连接。

如图 2a 和 2b 所示,三个结构专家网络 (x1,y1,z1) 协同工作,处理各自的任务。这种结构信息然后将被转换成功能表示 g1(x) = [a1(t),b1(t),c1(t)] ,这是来自每个专家的最重要组件的整体图像。例如:如果三个专家中的每一个都接受了类别狗的视觉 (x1) 、听觉 (y1) 、体感成分 (z1) 的训练,那么系统的集体结构输出将是他们的动力学的总和,表示为h1(x)=【x1(t),y1(t),Z1(t)】*。另一方面,功能表示将包含该类别专家之间最相关的特性,并提供可以在整个框架中交流的全局语言。专家 x1,y1,z1 的结构信息将以通用格式( a1,b1,c1 )输出,该格式可以跨层传递以约束和影响其他专家,即跨专家的横向影响将发生在这些通用语言表示上。例如:将狗的视觉(从专家 x1 获得,现在用全局可通信输出 *a1 表示)*与犬吠的听觉 ( 从专家 y1 获得,现在用全局可通信输出 *b1 表示)和皮毛的体感表示 ( 从专家 z 1 获得,现在用全局可通信输出表示)通过横向连接,这些公共语言输出( a1、b1、c1 )通过创建复杂的多模态信息表示,影响专家个人处理和动态的整体画面的创建。此外,这些公共语言输出本身是非自治动态系统,其有助于层G1(x)=【a1(t),b1(t),C1(t)】的最终功能输出。

在大脑中,已经发现神经振荡是本征模式的线性叠加(Raj 等人,2020)。Abdelnour 等人,2018 年,证明了结构连接性和静息状态功能连接性通过拉普拉斯-本征结构相关。研究人员通过使用结构图的特征分解来预测结构和功能连接之间的关系,从而检验了这一假设。该特征向量全功能连接模型与健康的功能和结构人类数据以及非线性神经模拟进行了比较和验证。通过这一点,作者能够验证拉普拉斯特征向量可以在组结构水平上从独立成分分析预测功能网络。利用这些发现,我们相信使用解剖活动加权的区域间耦合,即结构专家,将影响神经结活动,以在我们的框架内显示相同的功能结果(Nair,2021)。因此,我们建议谱图理论可以用于隔离集群和约束基于专家内部和跨结构和功能关系的特征关系的抽象的神经集群。正如 Nair (2020)所假设的,通过将大脑可视化为一个网络,其中神经元充当通过加权连通性链接的节点,图论可以用于确定代数连通性。此外,对该网络的谱图论分析可以将连通性划分为其最小的子组件,从而产生具有高内部连通性和低外部连通性的抽象集群。这些集群可以表明信息是如何在结构专家和整个框架中被保留和操作的。可以进一步构建透明工具来理解抽象如何链接、更新、组合和重组在一起,从而更好地理解系统。

组装该框架的下一步如图 3 a 和 3 b 所示。可以将专家组织成分层结构,以便随着时间的推移对信息进行连续处理。尽管这里示出了三层,每层具有固定数量的专家,但是具有 nm 数量专家的 n 层可以跨层存在。拥有串行和分级信息流的重要性在于,在每一层都会发生不同级别的处理,这些处理会通知下一批专家,这些专家可以进一步构建越来越复杂的输入信息表示,以确定适当的输出。图 3 c 和 3 d 进一步展示并建立了上面给出的内环路第二层和第三层单层的数学解释。每一层专家的数学处理与第一层保持相同,直到处理完成并执行输出。当信息被第一层专家处理时,功能输出被用于通知第二层的下一组结构专家,他们对这些抽象执行更复杂的分析。第一层中产生的函数输出通过拉普拉斯特征变换被转换回结构输入,以传递给第二层的结构专家。类似地,这些结构专家执行特定的处理并输出公共语言表示,该公共语言表示被横向约束并作为该层的最终功能表示输出,以传递给第三层中的下一组专家。在我们的例子中,第三层是框架的最后一步。它同样执行处理的最后一步,并向外界输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3: a)表示扩展到两层的内部循环的框架,b)表示上面给出的扩展到两层的内部循环的数学解释,c)表示扩展到三层的内部循环的框架,d)表示上面给出的扩展到两层的内部循环的数学解释。

*说详细点,如果第一层专家在对一只狗进行视觉( x1 )、听觉( y1 )、体感( z1 )分析。功能输出 g1(x) = [a1(t),b1(t),c1(t)] 将被转换回结构输入,然后该结构输入将被输入到第二层的相关专家。第二层处理将整合来自第一层的环境输入,以实现更高水平的处理。这可能包括诸如场景整合( x2 )、语言( y2 )以及运动动作和规划( z2 )等专家。类似于第一层,结构输入将被合并为 *h2(x) = [x2(t),y2(t),z2(t)],*并被转换为全球通用语言 a2,b2,c2 ,在此基础上横向连接可以操作以输出层 *g2(x) = [a2(t),b2(t),C2(t)】*的功能表示。类似地,第二层的功能性输出将被转换回结构性输入,并分别输入给第三层的相关专家。这一层将整合来自第二层的信息,以实现用于确定输出的最终抽象处理级别。这可能包括专家,如值预测( x3 )、值评估和误差( y3 )和电机执行( z3 )。这些专家将整合来自较低层抽象的信息,以执行一个使目标最大化的行动,或者总体的 f(x) 功能。目标将代表框架必须实现的一个主动需求,比如到达一个机器人的充电站。如先前在过去的层中计算的,合并的结构输入将被合并为 *h3(x) = [x3(t),y3(t),z3(t)],并被转换成全球通用语言 a3,b3,c3 ,横向连接可以基于该语言操作以确定将生成输出的最终函数表示。

此外,由于所有层都具有双向连接性,第三层可以对第二层施加自上而下的影响,以重定向专家来编码新的或特定的信息,从而在下一时间步生成更好的输出。第二层同样可以在执行期间或之后对第一层施加自上而下的影响,以收集更好的信息。此外,如果收集的这种信息导致更好的动作-结果映射,场景中的相关对象被记住,或者被门控和保持,并且注意力在将来被引导到它们。这些相同的注意、维护和门控机制充当了强加在专家动力系统上的约束。这些约束中的每一个将在不同的抽象层次上不同地显现,例如在框架的较低层次上,它可以指导场景搜索,而在框架的较高层次上,它可以指导与过去的特定动作-结果配对相关联的奖励值的语义搜索。

应该注意的是,框架的每一层都不是建立在从皮层下到皮层脑区域的复杂性上,而是对应于抽象层次处理的建立。例如,用于感觉运动处理的层级中的第一层中的专家将包括诸如初级视觉皮层(V1)的较低层以及诸如下颞叶皮层(IT)的较高层。而第二层中的专家将包括辅助运动区(SMA)和前运动皮层等区域,辅助运动区提出内部产生的运动规划,前运动皮层负责运动控制的各个方面,包括运动的准备。这些区域将处理从第一层输入的场景信息,以计划在第三层评估的运动输出。基于第二层的信息,第三层将构建系统的最终功能输出。第三层可以包括大脑区域,如产生神经脉冲以执行运动的初级运动皮层,以及整合不同奖励值并通过基底神经节选择进行(作用于)和不进行(不作用于)哪些动作的前额叶皮层(PFC)。这种操作类似于混合专家方法,将从较低层次到较高抽象处理层次的专家进行生物组合。此外,尽管这一框架可能不是对大脑功能的完全准确的描述,但据信较高级别的大脑区域运作并处理来自较低级别的区域的日益复杂的抽象(Nair,2020,Richards 等人,2019)。这可以在人类发展中看到,因为儿童通过感觉运动区建立对环境的抽象,然后他们可以在皮层的更高区域使用这些抽象来实现更复杂的认知规划。随着环境抽象性的提高,更高层次的规划也在提高。

组装完内部回路后,我们接下来开始组装外部回路,即速度较慢的整合系统。如图 4 a、4b 和 4c 所示,内环中的每一层和专家对应于外环中的镜像层和专家。拥有两个独立的相同层次的串行处理循环的目的是创建一个辅助系统,该系统可以积累和吸收来自内部循环的相关信息,以实现更复杂和更长时间尺度的认知。因此,来自每个内部循环层的每个门控表示被传递到相应的外部循环层,在那里可以进行表示的细化、更新和重组。如前所述,尽管内循环和外循环都显示了三层,每层三个专家,但是在框架中每层可以有 n 个层和 nm 个专家。唯一存在的限制是内循环中的层数和每层的专家数必须与相应的外循环中的相匹配。尽管这种架构看起来有些矛盾和重复,但我们相信它可以产生一个更具普遍性、更易解释的框架,并体现高级认知能力的属性。此外,从神经科学的角度来看,重复的大脑区域并不存在于这种双环层次结构中。然而,我们认为相同的大脑区域同时扮演着内环和外环的角色。通过将框架分成多个副本,我们相信我们可以创建一个更易解释的表示框架,因为它与当前任务相关,并且它们是如何随着时间和学习而改进的。

*组装后,内部循环处理世界的当前状态,并制定行动-结果表示,使特定或多个目标的回报最大化。内部循环积极参与、处理和行动世界,通过横向连接约束专家之间的表示,并通过自上而下和层间双向连接制定受控反馈。导致奖励的行动-结果表示被维护和选通,从而通过系统训练相关的权重和表示。虽然所使用的学习类型还没有明确规定,但我们相信可以使用反向传播或基于多巴胺的学习信号。这将取决于实验,取决于哪个信号在系统中导致更好的性能。然而,我们相信多巴胺系统的动态和多面性可能会带来更好的表现。来自当前任务的内部循环的这些门控表示被传递到相应的外部循环模拟专家和层。例如, h1(x) = [x1(t),y1(t),z1(t)] 和 *g1(x) = [a1(t),b1(t),c1(t)],将被输入到相应的一个外环层和专家层,最终导致 H 1(x) = [X1(t),Y1(t),z1(t)]和 G 1(x) = [A1(t),B1(t),C1(t)],当系统与现实世界交互时,门控表示从内环到外环的这种转移发生在所有任务和所有相关门控时间步。

外部循环的作用是通过在不直接与现实世界交互的单独循环中提炼、重组和更新这些门控表示来获取这些表示并巩固信息。例如,内部循环可以使用不同类型的学习来正确识别任务中的动作-结果配对。这可能包括在不同的时间步骤使用的指导学习和无监督学习策略,它们导致获得相同的目标,但是使用不同的动作组合。然后,这两种学习类型的门控表示将被发送到外部循环,外部循环的专家将在抽象空间中提炼和重组这些表示,并提出一种新的整合策略,该策略是由现实世界中的模型制定的先前策略的最佳元素的组合。当框架在未来的时间步骤中处于相同的情况下时,这些新的表示组合将由外部循环使用双向和自顶向下的影响施加到内部循环上。比如 G3(x)=【A3(t),b3(t),C3(t)】对内循环层施加影响三个专家,G3(x)=【A3(t),B3(t),C3(t)】,决定最终的功能输出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4: a)表示内外环展开为一层的框架的数学解释,b)表示内外环展开为两层的框架的数学解释,c)表示内外环展开为三层的框架的数学解释。

外环的另一个重要性是它对思考和推理的贡献,即获取系统知道的信息,并重新组合和提炼这些信息,以建立新的更好的世界表示和模型。在人类中,这被认为是可能的,通过思考的能力或在代表空间中漫步。如上所述,这种离线组合信息的能力允许自然智能通过仅在真实世界中有目的地行动来管理计算和物理约束。在时间敏感的上下文中,内部循环会以两种方式解决任务。首先,层次结构的较高层可以指导较低层的系统从环境中收集可以连续在线处理的附加信息。第二,通过减少诸如注意力之类的约束的影响,内环的较低级别的区域将被分离,并且计算处理将被重定向到较高级别的区域。该策略将涉及仅使用来自内部循环的现有表示以及来自外部循环的表示,这些表示先前已经被细化并且通过自顶向下和双向控制来传递。这种类型的处理包括如何确定去你家乡商店的最快路线。

另一方面,在对时间不敏感的环境中,目标所施加的影响程度将取决于实现目标的紧迫性。在需要在一天内确定解决方案的情况下,目标会比需要在一周内确定解决方案的情况对框架施加更大的影响。在这些情况下,通过减少对内循环和当前环境的关注,主动处理可能完全发生在外循环中。在这个处理过程中,系统会在已经选通和存储在外部循环中的表示中漫游。通过推理、反射和内部查询,这些表示将被引导以新的和新颖的方式组合。反思将允许框架将预测的结果与在实现目标的背景下获得的奖励进行比较。这些表示将使用内部查询过程进行检查,该过程将假设现有动态如何以及为什么与实现目标不同,并且推理将用于形成新的因果关系,该因果关系可以将系统驱动到新的更高的奖励值。这些新的表示将被保持为在相关时间点施加在内部循环上的计划。我们认为,这些外部循环过程可以在更长的时间尺度上进一步扩展,类似于走神和做梦。

在这个框架中,还应该注意的是,大脑使用相同的机制来记忆过去和模拟未来(Schacter 等人,2012 年)。我们相信,通过使用表征的动态模型和构建一个外部循环来巩固和组合表征,以反映过去的事件和模拟新的未来事件,我们可以体现这些相同的认知属性。此外,我们认为这个框架应该带来的好处是类似于大脑的串行和并行处理。当内部循环正在破译如何在一项新任务中取得成功时,它输入信息,以便在循环之间串行和分层处理。然而,一旦框架掌握了任务,它就可以并行处理两个循环中的多个信息流,例如,对多个感官刺激或动作自动赋值。最后,尽管没有明确提到,我们相信通过使用噪声和上述戒律,系统的一个突现性质将是利用稀疏分布表示和吸引子动力学。这可以使用谱图理论进一步分析,谱图理论将确定内部强连接和外部弱连接的集群。

总之,我们将把这个框架根植到一个现实世界的例子中,利用一个经过训练的机器人来执行咖啡制作任务(Tsai 等人,2010)。与介绍性文本中的人类相似,该任务的目标是让机器人正确识别场景中的所有对象,如咖啡、水、咖啡机的部件,并组合制作咖啡所需的正确步骤。内环第一层中的专家将获取环境信息,例如物体的视觉输入、不同物体发出的声音、物体的体感感觉以及伸手够到这些物体所需的预先训练的运动动作。通过框架的第一层,机器人将以面向目标的方式与其环境进行交互,总体目标函数 f(x) 引导系统。然后,这些信息将被发送到框架的第二层,在这个阶段,更复杂的处理,如场景整合、计划建议和运动动作规划,可以在这些独立的横向连接的专家之间进行。这个阶段将整合来自第一阶段的感觉运动信息,整合运动反馈,并提出行动计划。通过双向连接并依靠发生在第二层的处理,这一层的专家可以对较低层的专家施加自上而下的影响,以收集新的信息来制定更好的行动计划。此外,这可能包括编码关于场景中对象的新的或特定的视觉、听觉或身体感觉信息。在训练的早期阶段(例如试错学习)或者如果框架处于巨大的时间压力下,我们相信第二级的处理可以导致第三级执行的直接动作输出,而不需要额外的处理。然而,由于这种策略会忽略更高级别的处理,而是使用简单的策略,例如过去的强化学习值,以及相似性和相异性分析,这种方法很可能会导致更低水平的奖励和实现当前目标的更低概率。然而,这种策略在速度与精度的权衡中或者在不需要大量处理的简单情况下是有用的(Herd 等人,2022 年,出版中)。

当表示在第二层被细化时,形成的抽象可以被发送到第三层进行最终处理。这可能包括奖励值评估和结果预测以及动作执行等过程。这个处理的最后阶段包括预测行动结果值,整合过去行动的错误,并组合一个执行的运动行动计划。在模型执行动作并从环境接收到结果之后,在结果的执行中涉及的表示可以被训练为满足目标,即奖励,或者被训练为不满足目标,即惩罚。在每一级通过这个过程选通的信息然后被传送到相应的外环层和专家。外环的第一层将对门控输入进行更高级别的处理。这将包括微调感觉运动信息的配对,并与之前使用的与该目标匹配的相似或不相似的表征进行比较。然后,信息将被发送到外环的第二级,它将整合场景中存在的所有组件,并为对象和运动计划分配奖励值,以便内环可以在稍后的时间点更快地引起注意。如果框架不能以一种新的方式合并这些表示或者合并动作以更快地执行,自上而下的影响将被施加回外部循环层次结构的第一层。这将迫使外循环中的感觉运动输出对它们的表征进行新的处理,或者在将来处于类似的情况时,保留通过对内循环的注意施加影响以注意该信息的请求。

在第二级中处理的信息最终被发送到外环的最高级别,即第三级。在处理的最后阶段,通过相似-不相似或奖励比较,将运动计划的表示与先前的组合和结果进行比较。如果系统有离线思考的能力,框架将被允许在表征空间中漫游。这将包括三种行为:1)反思为什么一个特定的行为在过去没有导致一个结果,并参与新的结果组合,这将导致更高的或预期的奖励-目标匹配状态;2)通过使用像 GPT-3 这样的语言模型,该模型可以生成简单的句子来检查目标是什么,为什么内部状态没有导致奖励,以及新的行动组合如何在未来导致更高的目标匹配奖励状态。使用偏微分方程来理解系统的潜在动力学是框架进行这些关联的关键;3)通过评估表示和制定内部查询来确定行动如何和为什么导致结果,系统可以制定因果动态以理解输入-输出和行动-结果关系。通过这个专家混合的过程,随着时间的推移连续展开的分层处理,以及两个循环的利用,我们相信机器人和人工智能网络可以更快地学习,并以更可解释的方式概括任务。这种相同的处理过程可以类似地应用于其他例子,如自动驾驶汽车,以及机器人群体,以实现第十条戒律中强调的智能的社会组成部分。

结论

总之,人工智能发展的最后一波取得了巨大的胜利。这些人工智能工具与自然智能仍有许多不同之处,尤其是与人类出色的普通学习者相比。因此,在本文中,我们确定了大脑功能的组成部分,我们认为人类的智能是系统地和分层次地建立在这些组成部分上的。这些组成部分被称为十诫。我们相信,这些戒律在一个系统中共同发挥作用,成为导致更高层次认知和智能出现的基本要素。这个框架的一个定义性特征是,它不是从一个单独的戒律中汲取力量,而是从一个整体的系统中汲取力量,这个系统将所有的组成部分结合起来,使之比其各个部分更加强大。虽然这个框架是一个包罗万象的智能理论,但本文的目的同样是为了确定可以帮助克服当前人工智能挑战的基本原则,以及为下一波智能模型和完全自主或具体化的 AGI 提供信息。这十条戒律最后体现在一个框架中,这个框架混合了专家的方法,包括使用动力系统和两个认知控制回路。我们提出这项工作不是作为一个绝对的解决方案,而是作为未来架构和讨论的灵感,这些架构和讨论也可以建立在大脑功能的力量支柱上。

文献学

Abdelnour、m . Dayan、o . Devinsky、t . Thesen 和 a . Raj(2018 年)。从解剖网络的拉普拉斯特征结构可以预测功能性大脑连接。神经影像172 ,728–739

艾哈迈德和霍金斯(2016 年)。神经元如何对稀疏分布表示进行操作?稀疏性、神经元和活跃树突的数学理论。 arXiv 预印本 arXiv:1601.00720

Ahmad,s .,& Scheinkman,L. (2019 年)。我们怎么会这么笨呢?使用高度稀疏表示的好处。 arXiv 预印本 arXiv:1903.11257

m . AlQuraishi(2019 年)。CASP13 的α折叠。生物信息学35 (22),4862–4865。

Arnab,a .,Dehghani,m .,Heigold,g .,Sun,c .,lui,m .,和 Schmid,C. (2021 年)。Vivit:视频视觉转换器。在IEEE/CVF 计算机视觉国际会议论文集(第 6836–6846 页)。

Ashok,p .,Hashemi,v .,Křetínský,j .,,和 Mohr,S. (2020,10 月)。Deepabstract:用于加速验证的神经网络抽象。在验证和分析自动化技术国际研讨会上(第 92-107 页)。斯普林格,查姆。

巴尔斯,B. J. (1993 年)。关于意识的认知理论。剑桥大学出版社。

巴尔斯,B. J. (1997 年)。在意识的剧场:心灵的工作空间。美国牛津大学出版社。

巴尔斯,B. J. (2002 年)。有意识进入假说:起源和最近的证据。认知科学趋势6 (1),47–52。

巴尔斯,B. J. (2005 年)。意识的全球工作空间理论:走向人类经验的认知神经科学。大脑研究进展150 ,45–53。

巴德雷,d .,&尼,D. E. (2018)。额叶皮层和行为的等级控制。认知科学趋势22 (2),170–188。

Baker,b .,Kanitscheider,I .,Markov,t .,Wu,y .,Powell,g .,McGrew,b .,和 Mordatch,I. (2019)。从多代理自动课程中使用紧急工具。 arXiv 预印本 arXiv:1909.07528

巴拉班,S. (2015 年)。深度学习和人脸识别:最先进的技术用于人类和活动识别的生物识别和监控技术第十二期9457 ,68–75。

巴西特博士和马特博士(2017 年)。人类学习的网络神经科学:为大脑和行为的定量理论提供信息的潜力。认知科学的趋势21 (4),250–264

纽约州本吉奥(2017 年)。意识优先。 arXiv 预印本 arXiv:1709.08568

贝尔,硕士,康纳斯,学士和帕拉迪索,硕士(2020)。神经科学:探索大脑,增强版:探索大脑。琼斯&巴特利特学习。

Berner,c .、Brockman,g .、Chan,b .、Cheung,v .、Dę biak,p .、Dennison,c .……、张,S. (2019)。大规模深度强化学习的 Dota 2。 arXiv 预印本 arXiv:1912.06680

Beyeler,m .,Rounds,e .,Carlson,K. D .,Dutt,n .,& Krichmar,J. L. (2017)。皮层中的稀疏编码和降维。 BioRxiv ,149880。

伯特温尼克,M. M. (2008)。行为和前额叶功能的层次模型。认知科学趋势12 (5),201–208。

m .布林和 g .斯特克(2002 年)。动力系统介绍。剑桥大学出版社。

t .布朗、b .曼恩、n .赖德、Subbiah、m .卡普兰、J. D .、Dhariwal、p .…& amo dei,D. (2020 年)。语言模型是一次性学习者。神经信息处理系统的进展33 ,1877–1901。

**Brunton,S. L .、Brunton,B. W .、Proctor,J. L .、& Kutz,J. N. (2016)。控制用非线性动力系统的 Koopman 不变子空间和有限线性表示。 PloS one11 (2),e0150171。

布伦顿,s . l .&库茨,J. N. (2022)。数据驱动的科学与工程:机器学习、动力系统和控制。剑桥大学出版社。

Brunton,S. L .,Proctor,J. L .,& Kutz,J. N. (2016)。带控制的非线性动力学的稀疏识别。 IFAC-PapersOnLine49 (18),710–715。

布伦顿,S. L .,普罗科特,J. L .,&库茨,J. N. (2016)。通过非线性动力系统的稀疏识别从数据中发现控制方程。美国国家科学院院刊113 (15),3932–3937。

巴克纳特区(2018)。没有魔法的经验主义:深度卷积神经网络中的转换抽象。合成195 (12),5339–5372。卡鲁阿纳(2006 年 6 月)。监督学习算法的实证比较。在第 23 届机器学习国际会议论文集(第 161–168 页)。

陈,A. S .,南,h .,奈尔,s,&芬恩,C. (2021)。可扩展机器人强化学习的示例批量探索。 IEEE 机器人与自动化字母6 (3),4401–4408。

陈,d .,白,y .,赵,w .,阿曼特,s .,格雷瓜尔,J. M .,&戈麦斯,C. P. (2019)。深度推理网络:快速和慢速思考。 arXiv 预印本 arXiv:1906.00855

Chowdhery,a .、Narang,s .、Devlin,j .、Bosma,m .、Mishra,g .、Roberts,a .、… & Fiedel,N. (2022)。Palm:用路径扩展语言建模。 arXiv 预印本 arXiv:2204.02311

克罗斯,,j .,岳,y .&,,J. P. (2021)。使用深度强化学习来揭示大脑如何在高维环境中编码抽象的状态空间表示。神经元109 (4),724–738。**

f .库什曼和 a .莫里斯(2015 年)。人类目标选择的习惯性控制。美国国家科学院院刊112 (45),13817–13822。

德哈瓦斯、J. A .、帕里马尔、s .、松、C. S .、& Chee、M. W. (2012 年)。睡眠剥夺会降低休息和任务执行期间的默认模式网络连接性和反相关性。神经影像59 (2),1745–1751。

Dehaene,s .,Lau,h .,和 Kouider,S. (2021 年)。什么是意识,机器会有意识吗?。机器人学、人工智能和人类,43–56。

邓(2011 年 10 月)。面向信息处理的深度结构化学习综述。进行中。亚太信号与信息会议。年度峰会和会议(APSIPA-ASC)(第 1-14 页)。

D’Mello,A. M .,Gabrieli,J. D .,& Nee,D. E. (2020)。人类小脑分级认知控制的证据。当代生物学

多尔,B. B .,雅各布斯,W. J .,桑菲,A. G .,,弗兰克,M. J. (2009)。强化学习的教学控制:一项行为和神经计算研究。脑研究1299 ,74–94

Droutman,v .,Bechara,a .,& Read,S. J. (2015 年)。岛叶皮层不同亚区在决策过程不同阶段的作用。行为神经科学前沿9 ,309。

范,a .,博萨莱,s .,施文克,h .,马,z .,埃尔基什基,a .,戈亚尔,s,…,朱林,A. (2021)。超越以英语为中心的多语言机器翻译。机器学习研究杂志22 (107),1–48。

Gariépy,J. F .,Watson,K. K .,Du,e .,Xie,D. L .,Erb,j .,Amasino,d .,& Platt,M. L. (2014)。人类和其他动物的社会学习。神经科学前沿8 ,58。

Geirhos,r .,Jacobsen,J. H .,Michaelis,c .,Zemel,r .,Brendel,w .,Bethge,m .,& Wichmann,F. A. (2020)。深度神经网络中的捷径学习。自然机器智能2 (11),665–673。

乔治博士和韦尔塔环境局(2018 年)。实时引力波探测和参数估计的深度学习:先进 LIGO 数据的结果。物理字母 B778 ,64–70。

图式和图式介导的记忆的神经生物学。潮流趋势。Sci。 21,618–631(2017 年)。

Gillenwater,L. A .,Helmi,s .,Stene,e .,Pratte,K. A .,Zhuang,y .,Schuyler,R. P .,… & Kechris,K. J. (2021)。慢性阻塞性肺疾病多组学分型管道。 PloS one16 (8),e0255337。

格雷瓦尔,k .,福里斯特,j .,科恩,B. P .,,艾哈迈德,S. (2021)。超越点神经元:持续学习的主动树突和稀疏表示。 bioRxiv

**Goyal,a .,Didolkar,a .,Lamb,a .,Badola,k .,Ke,N. R .,Rahaman,n .,… & Bengio,Y. (2021)。通过共享的全局工作空间协调神经模块。 arXiv 预印本 arXiv:2103.01197

海登,B. Y. (2018)。觅食视角。行为科学最新观点,24,1–6。**

Herd,S. A .,Banich,M. T .,& O’reilly,R. C. (2006 年)。认知控制的神经机制:Stroop 任务执行和 fMRI 数据的整合模型。认知神经科学杂志18 (1),22–32。

Herd,s .,Krueger,k .,Nair,a .,Mollick,j .,& O’Reilly,R. (2021)。人类决策的神经机制。认知,情感,&行为神经科学21 (1),35–57。

Herd,s .,Nair,a .,Krueger,k .,& O’Reilly,R. (2022)。思考思考的神经基础。认知神经科学杂志,正在印刷

**Heyes,C. (2010 年)。镜像神经元从何而来?。神经科学&生物行为评论34 (4),575–583。

Horovitz,S. G .、Braun,A. R .、Carr,W. S .、Picchioni,d .、Balkin,T. J .、Fukunaga,m .、& Duyn,J. H. (2009 年)。深度睡眠期间大脑默认模式网络的解耦。美国国家科学院院刊106 (27),11376–11381。**

Hubinger,e .,van Merwijk,c .,Mikulik,v .,Skalse,j .,和 Garrabrant,S. (2019 年)。高级机器学习系统中学习优化的风险。 arXiv 预印本 arXiv:1906.01820

Huerta,E. A .,Allen,g .,Andreoni,I .,Antelis,J. M .,Bachelet,e .,Berriman,G. B .,… & Zhao,Z. (2019)。通过深度学习实现实时多信使天体物理学发现。自然评论物理1 (10),600–608。

亨特、L. T .、马拉塞克拉、W. N .、德伯克、A. O .、米兰达、b .、法默、S. F .、伯伦斯、T. E .、&肯纳利、S. W. (2018)。前额叶皮层注意力和决策计算的三重分离。自然神经科学21 (10),1471。

Hunter,K. L .,Spracklen,l .,和 Ahmad,S. (2021 年)。两个稀疏比一个稀疏好:释放稀疏-稀疏网络的性能优势。 arXiv 预印本 arXiv:2112.13896

Ilin,r .,Watson,t .,& Kozma,R. (2017 年 5 月)。深度学习神经网络中的抽象层次。在 2017 国际神经网络联合会议(IJCNN) (第 768–774 页)。IEEE。

金晓波,王海祥,王晓燕,白,杨廷涛,苏铁林,孔,刘建林(2020)。基于贝叶斯优化的串行两级分解深度学习预测模型。复杂性,2020 年

琼斯,例如,鲍威尔,T. P. S. (1970)。猴子大脑皮层内汇聚感觉通路的解剖学研究。93 (4),793–820。

科赫、兰戈斯科、普法乌、勒和夏基(2021 年)。深度强化学习中的客观鲁棒性。 arXiv 预印本 arXiv:2105.14111

新泽西州克里格斯科特(2015 年)。深度神经网络:模拟生物视觉和大脑信息处理的新框架。视觉科学年度回顾1 ,417–446。

莱克、B. M .、乌尔曼、T. D .、特南鲍姆、J. B .、格什曼、S. J. (2017)。建造像人一样学习和思考的机器。行为与脑科学40

李,于(2017)。深度强化学习:综述。 arXiv 预印本 arXiv:1701.07274

Liakoni,v .,Lehmann,M. P .,Modirshanechi,a .,Brea,j .,Lutti,a .,Gerstner,w .,& Preuschoff,K. (2022)。惊奇-行动者-批评家模型的大脑信号:人类决策中多重学习模块的证据。神经影像246 ,118780。

Lusk,r .,Stene,e .,Banaei-Kashani,f .,Tabakoff,b .,Kechris,k .,和 Saba,L. M. (2021 年)。Aptardi 使用高通量 RNA 测序和 DNA 序列预测样品特异性转录组中的聚腺苷酸化位点。自然通讯12 (1),1–13。

**Lusch,b .,Kutz,J. N .,& Brunton,S. L. (2018 年)。非线性动力学泛线性嵌入的深度学习。自然通讯9 (1),1–10。马尔科维茨,h .,&瓦雄,R. (1990 年)。条件推理、表示和抽象层次。发展心理学26 (6),942。

梅苏拉姆,M. M. (1998)。从感觉到认知。脑:神经病学杂志121 (6),1013–1052。

莫里克、J. A .、哈兹、T. E .、克鲁格、K. A .、奈尔、a .、麦基、p .、赫德、S. A .、&奥莱利、R. C. (2020)。阶段性多巴胺的系统神经科学模型。心理复习127 (6),972。

莫泽尔,M. C .,卡萨科夫,&林赛,R. V. (2018)。状态去噪递归神经网络。 arXiv 预印本 arXiv:1805.08394

Munakata,y .,Herd,S. A .,Chatham,C. H .,Depue,B. E .,Banich,M. T .,& O’Reilly,R. C. (2011)。抑制控制的统一框架。认知科学趋势15 (10),453–459。

梅铎,c .,李,z .,周,h .&杜里格,T. (2016)。封锁:分层深度网络的动态模型选择。在IEEE 计算机视觉和模式识别会议论文集(第 2583–2591 页)中。

奈尔斯(2021)。限制神经抽象的数学方法和扩展到更高级认知所需的机制。 arXiv 预印本 arXiv:2108.05494 。**

纽厄尔(1994 年)。认知的统一理论。哈佛大学出版社。

奥莱利,R. C. (2010)。前额叶皮质组织的内容和方式。神经科学趋势33 (8),355–361。

奥莱利,共和党(2020)。揭开动机的神秘面纱。认知科学趋势24 (6),425–434。

奥赖利,R. C .,布雷弗勒,T. S .,&科恩,法学博士(1999)。基于生物学的工作记忆计算模型。工作记忆模型:主动维护和执行控制的机制,375–411。

O’Reilly,R. C .,Hazy,T. E .,Mollick,j .,Mackie,p .,& Herd,S. (2014 年)。大脑中目标驱动的认知:一个计算框架。 arXiv 预印本 arXiv:1404.7591

r . c . o ’ Reilly,Herd,S. A .,& Pauli,W. M. (2010)。认知控制的计算模型。神经生物学最新观点20 (2),257–261。

奥赖利,R. C .,& Munakata,Y. (2000 年)。认知神经科学中的计算探索:通过模拟大脑来理解思维。麻省理工出版社。

r . c . o ’ Reilly、y . Munakata、m . j . Frank 和 t . e . Hazy(2012 年)。计算认知神经科学。美因茨:儿科出版社。

r . c . o ’ Reilly,Nair,a .,Russin,J. L .,& Herd,S. A. (2020)。额叶皮层环路中的顺序交互加工如何支持习惯性加工到控制性加工的连续体。心理学前沿11 ,380。

r . c . o ’ Reilly,Russin,J. L .,Zolfaghar,m .,& Rohrlich,J. (2021)。大脑皮层和枕叶的深度预测学习。认知神经科学杂志33 (6),1158–1196。

皮尔森,H. A .,&加什勒,硕士(2017)。机器人学中的深度学习:近期研究综述。高级机器人31 (16),821–835。

**Pignatelli,m .,& Beyeler,A. (2019)。杏仁核回路中的价态编码。行为科学的当前观点26 ,97–106。

平托,l .,戴维森,j .,&古普塔,A. (2017,5 月)。通过竞争监督:学习任务的机器人对手。在 2017 IEEE 机器人与自动化国际会议(ICRA) (第 1601–1608 页)。IEEE。

波吉欧,t .,班布尔斯基,a .,&廖,Q. (2019)。深度网络中的理论问题:近似、优化和推广。 arXiv 预印本 arXiv:1908.09375 。**

Pogodin,r .,Mehta,y .,Lillicrap,t .,& Latham,P. E. (2021 年)。生物学似是而非的卷积网络。神经信息处理系统的进展34 ,13924–13936。

祁国杰(2016)。用于语义分割的分层门控深度网络。在IEEE 计算机视觉和模式识别会议论文集(第 2267–2275 页)。

拉梅什、达里瓦尔、尼科尔、朱、陈、米(2022)。具有剪辑潜在时间的分层文本条件图像生成。 arXiv 预印本 arXiv:2204.06125

拉德福德、a .、金、J. W .、哈拉奇、c .、拉梅什、a .、高、g .、阿加瓦尔、s .…&苏茨基弗,I. (2021 年 7 月)。从自然语言监督中学习可转移的视觉模型。在机器学习国际会议(第 8748–8763 页)。PMLR。

**Raj,a .,Cai,c .,Xie,x .,Palacios,e .,Owen,j .,Mukherjee,p .,& Nagarajan,S. (2020)。脑振荡的谱图理论。人脑图谱

拉希,b .&博恩,J. (2013)。睡眠在记忆中的作用。生理评论。拉武里,兰茨,k .,王绍博,m .,康金,d .,拉姆,r .,米罗斯基,p .,… &穆罕默德,S. (2021)。使用雷达的深度生成模式熟练的降水临近预报。性质597 (7878),672–677。**

任,m .,廖,r .,费塔亚,e .,,泽梅尔,R. (2019)。基于注意吸引子网络的增量少镜头学习。神经信息处理系统的进展32

雷诺兹和奥赖利(2009 年)。使用强化学习开发 PFC 表示。认知113 (3),281–292。

Richards,B. A .,Lillicrap,T. P .,Beaudoin,p .,Bengio,y .,Bogacz,r .,Christensen,a .,… & Kording,K. P. (2019)。神经科学的深度学习框架。自然神经科学22 (11),1761–1770。

Rolls,E. T .,& Treves,A. (2011 年)。大脑中信息的神经元编码。神经生物学进展95 (3),448–490。

**Russin、r . c . O ’ Reilly 和 y . beng io(2020 年)。深度学习需要前额叶皮层。工作衔接 AI Cogn Sci107 ,603–616。

Russin,j .,Zolfaghar,m .,Park,S. A .,Boorman,e .,& O’Reilly,R. C. (2021 年 7 月)。用于关系推理的互补结构学习神经网络。在认知科学学会年会上。认知科学学会(美国)。会议(第 2021 卷,第 1560 页)。NIH 公共访问。

s Mann,P. G .,Wehrle,r .,Hoehn,d .,Spoormaker,V. I .,Peters,h .,Tully,c .,& Czisch,M. (2011)。开拓之脑从清醒到慢波睡眠的默认模式网络。大脑皮层21 (9),2082–2093。

桑切斯,E. (2017)。基于游戏学习的竞争与合作:案例研究。在促进严肃游戏学习和动机的教学技巧(第 161-184 页)。Springer,Cham

Schacter,D. L .、Addis,D. R .、Hassabis,d .、Martin,V. C .、Spreng,R. N .、& Szpunar,K. K. (2012 年)。记忆的未来:记忆、想象和大脑。神经元76 (4),677–694。**

Schechtman,e .,Laufer,o .,和 Paz,R. (2010 年)。负价扩大了学习的普遍性。神经科学杂志30 (31),10460–10464。

施耐德博士和洛根博士(2006 年)。认知过程的分级控制:顺序转换任务。实验心理学杂志:普通135 (4),623。

Schrittwieser,j .,Antonoglou,I .,Hubert,t .,Simonyan,k .,Sifre,l .,Schmitt,s .,和 Silver,D. (2020)。通过用学习过的模型计划来掌握雅达利、围棋、国际象棋和松木。性质588 (7839),604–609。

Silva,a .,& Gombolay,M. C. (2021 年 5 月)。编码人类领域知识以热启动强化学习。在AAAI 人工智能会议记录(第 35 卷,第 6 期,第 5042-5050 页)。

Silver,d .,Hubert,t .,Schrittwieser,j .,Antonoglou,I .,Lai,m .,Guez,a .,… & Hassabis,D. (2018)。一种通用的强化学习算法,可以掌握国际象棋、日本象棋和自我游戏。理科362 (6419),1140–1144。

西尔弗博士、辛格博士、普雷科普博士和萨顿博士(2021 年)。奖励就够了。人工智能299 ,103535。

Soofastaei,A. (2021)。介绍性章节:虚拟助手。虚拟助理,1。

苏,陈,徐,张,王,等(2020)。心理健康结果研究中的深度学习:范围审查。转化精神病学10 (1),1–26。

萨顿和巴尔托(2018 年)。强化学习:介绍。麻省理工出版社。

泰勒,p .,霍布斯,J. N .,伯罗尼,j .,,西格尔曼,H. T. (2015)。认知的全球图景:作为人类皮层网络和功能的组织原则的等级聚集。科学报告5 (1),1–18。

Team,O. E. L .、Stooke,a .、Mahajan,a .、Barros,c .、Deck,c .、Bauer,j .…& Czarnecki,W. M. (2021)。开放式学习会产生能力一般的代理人。 arXiv 预印本 arXiv:2107.12808

蔡超群、王、李彦宏、李彦宏、戴福成(2010 年 7 月)。拟人化双臂机器人的合作与任务执行:咖啡制作的应用。在 2010 年系统科学与工程国际会议上(第 239-244 页)。IEEE。

图式和新奇如何增强记忆的形成。趋势神经科学。2012 年第 35 期,211–219 页。

范·凯斯特伦,M. T. R .,& Meeter,M. (2020)。如何优化大脑中的知识构建? npj 学科学5 (1),1–7。

Velickovic,p .,Bosnjak,m .,Kipf,t .,Lerchner,a .,Hadsell,r .,Pascanu,r .,& Blundell,C. (2021)。推理调制的表征。

Vinyals,o .,Babuschkin,I .,Czarnecki,W. M .,Mathieu,m .,Dudzik,a .,Chung,j .,…,Silver,D. (2019)。星际争霸 2 中使用多智能体强化学习的特级大师级别。性质575 (7782),350–354。

Vogelstein、J. T .、Verstynen、t .、Kording、K. P .、Isik、l .、Krakauer、J. W .、Etienne-Cummings、r .……、Yang,W. (2022)。前瞻性学习:回到未来。 arXiv 预印本 arXiv:2201.07372

韦尔曼,H. M .,,盖尔曼,S. A. (1992)。核心领域的基础理论。心理学年刊43 (1),337–375。

惠廷顿,J. C .,穆勒,T. H .,马克,s .,陈,g .,巴里,c .,伯吉斯,n .,,T. E. (2019)。托尔曼-艾肯鲍姆机器:通过海马结构的一般化统一空间和关系记忆。 BioRxiv ,770495。

叶文伟,刘,库鲁塔奇,t,阿贝耳,p .,,高,Y. (2021)。用有限的数据掌握雅达利游戏。神经信息处理系统的进展34

周,谢,雷,谢(2018)。游移不定的大脑网络。神经科学通报34 (6),1017–1028。朱,谢军(2005)。半监督学习文献调查。

用卫星图像缩小碳清单中土地使用的差距

原文:https://towardsdatascience.com/bridging-the-land-use-gap-in-carbon-inventories-with-satellite-imagery-c82978a1c7

利用地理信息系统技术将树木和森林纳入地方 GHG 清单

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当温室气体(GHG)排放是气候变化的主要驱动力时,最近的 IPCC 报告指出,从大气中去除二氧化碳(CO2)对于限制全球变暖的影响至关重要。这与保持和扩大树木和森林捕获和储存碳的能力的重要性齐头并进,在地区或城市一级增强了当地集中努力的重要性。

尽管如此,许多地方 GHG 清单和气候行动计划倾向于更多地关注固定能源、运输、废物和工业过程,而不利于与土地使用相关的排放和清除。这主要是因为缺乏专业知识以及森林和树木对 GHG 的影响微不足道的想法。考虑到这一点, WRI土地部门补充试图扩展 GPC 中为农业、林业和其他土地利用(AFOLU)的“土地”子部门提供的有限指导。

在这里,我们将研究如何将该指南应用于案例研究——巴西萨尔瓦多市——专门使用公开可用的空间数据。该试点项目是在巴西 WRI 的城市 4 森林项目下,由劳拉·卡西亚和顾问古伊列梅·伊布洛诺夫斯基在 WRI 全球办公室团队的指导和支持下开发的,该团队由大卫·吉布斯、南希·哈里斯和约翰·罗布·普尔代表。

萨尔瓦多市的土地使用变化

萨尔瓦多位于巴西东海岸的大西洋雨林生态区。尽管它有很大的城市范围,有超过 280 万人口(巴西第四大城市),它还是几片残存的大西洋雨林的家园。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是过去 35 年里萨尔瓦多市及其土地利用变化的样子。主要是为了城市发展而砍伐森林。图片作者。

2020 年 8 月,萨尔瓦多市政厅发布了涵盖 2014-2018 年期间的城市 GHG 清单,并在同年 12 月推出了其气候行动计划。这两份文件都没有包括与土地利用相关的 GHG 流量。

最准确地计算清单期间(2014-2018 年)这些森林斑块和树木的 GHG 排放量和清除量的第一步是获取土地利用变化的空间数据。在这个试点项目中,数据来源于 MapBiomas ,这是一个基于谷歌地球引擎的国家免费土地利用分类图像数据库,来自 Landsat 7 马赛克。

然后,我们需要查看最初(2014 年)和最后(2018 年)的数据,以便估计土地利用随时间的变化,或者碳储量如何变化。为此,任何 GIS 软件都可以,我们需要做的只是运行一个函数(如栅格代数或区域统计)来捕获这两年的像素值。有了这个,我们就可以确定有多少土地被转化为林地。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者。数据来源:map biomass Project-Collection 5.0,巴西土地利用和土地覆盖图年度系列,于 2021 年 10 月 10 日通过链接访问:mapbiomas.org

为了使数据与最新的气专委 GHG 国家清单指南相一致,必须将其重新分类为六个主要的土地利用类别——林地*、耕地草地居民点湿地其他土地— ,我们可以将这些土地利用类别绘制成土地利用变化矩阵。在该矩阵中,每个单元代表在分析期间从给定土地利用类别开始到给定土地利用类别结束的土地面积。*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

公顷计的土地使用转换。深绿色单元格代表森林剩余林浅绿色单元格代表非林转变为林粉红色单元格代表森林转变为非林灰色单元格代表清查期间保持不变用途的土地。图片作者。

从上面的矩阵可以看出,在 2014-2018 年期间,大约 74 公顷的林地被其他土地使用,而 27 公顷被重新造林。然而,在像萨尔瓦多这样土地利用相对稳定的城市,来自陆地的 GHG 通量可能会集中在我们矩阵的对角线上,这意味着大多数调查区域仍属于同一土地利用类别。

排放量和清除量可能发生在属于同一土地利用类别的土地上,甚至发生在矩阵的同一单元内。例如,林地剩余林地既有来自采伐和其他自然干扰的排放量,也有来自森林生长的清除量;随着时间的推移,居住区剩余居住区类别内城市树冠层的变化会导致树冠层损失产生的排放和维护或增加城市树冠层产生的清除。

超越雨林斑块:可视化城市树冠层

我们已经测量了城市的林地覆盖面积,但仍有树木需要纳入城市结构,因为这些树木对碳的清除和排放同样重要。

到目前为止,我们能够使用中等空间分辨率的图像,也就是之前分类的 3000 万像素的陆地卫星 7 图像,但是这些还不足以识别混合在城市结构中的奇异树木。为此,精度最高的方法是对高分辨率影像进行影像分类,但这往往会超出许多城市的承受能力。因此,为了坚持只使用公开可用数据集的目标,我们将求助于 iTree Canopy 工具。

iTree Canopy 允许我们通过使用 Google Maps 卫星底图来量化给定地区(在我们的例子中,只有萨尔瓦多的非林地)的树冠覆盖。这是对影像的间接使用,因为与 GIS 软件中的分类不同,在 GIS 软件中,每个像素由算法分配一个类别,在这里,用户不能完全访问原始影像及其波段。这意味着我们不会处理像素,而是评估图像中任意随机选择的点对应于一棵树的概率。因此,为了使样本具有代表性,估计值取决于更多的点(在我们的例子中是 500 个)。一个简单的统计分布被计算出来,这个比例又被应用到以平方公里为单位的总调查面积上,以估算城市树木覆盖的面积。收集的样本点越多,越小,误差幅度越小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 iTree Canopy 中,随着越来越多的点被识别为树木或非树木,误差幅度会在箱线图中动态调整。图片作者。

为了能够评估城市树冠的变化,我们必须用相同的一组点来比较 2018 年和 2014 年的图像(例如,通过使用谷歌地球来访问历史图像)。ITree Canopy 提供了模板电子表格,我们可以从中获取结果,从而获得每个类别的最终统计数据。用于开发该分类模型的指南可在这里找到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过简单地将剩余树木和树冠损失的估计百分比乘以调查的总面积,即可计算出最终估计值。图片作者。

就这些吗?—说明土壤中储存的碳

计算森林和城市树冠覆盖的面积是我们努力实现的目标的关键,但这不是全部。陆地上的碳含量和在世界不同生态系统中循环的碳含量差异极大。

碳储存在多个池中:地上生物量、地下生物量、枯木、垃圾、土壤和伐木制品。在许多群落中,陆地上最大的单一碳库是地上生物量;而在其他地方,如沼泽或红树林,土壤碳可能是主要的碳库。枯木和凋落物碳可能占地上碳的百分之几,尽管它们也可能有很大差异。

将应用于面积计算的清除和排放因子只能说明地上生物量。这意味着我们需要找到一种方法来解释,至少,储存在土壤中的碳库。

这方面的来源可能因国家而异,但幸运的是,我们有令人惊叹的土壤网格项目为我们指路。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据土壤网格萨尔瓦多土壤有机碳储量的分布。图片作者。

从土壤网格的土壤有机碳储量层,我们知道土壤碳在城市区域内是如何分布的。唯一受到影响的碳库是位于被砍伐地区下面的碳库。由于我们已经从土地使用转换数据中知道了哪些区域被砍伐,我们可以量化这些特定区域的土壤中储存了多少碳。这与毁林后排放到大气中的碳不同:为此,我们需要土壤排放分数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2014 年至 2018 年期间被砍伐森林的地区土壤中的碳含量,根据占用先前森林地区的土地使用类别进行分层。作者图片

从公顷到吨:应用排放和清除系数

既然已经计算了森林、树木和土壤的土地利用转换,那么可以将它们与排放和清除因素结合起来。

这种简化的损益方法在根本上类似于其他部门的 GHG 清单,其中存量的变化被估计为活动数据(分类土地利用/土地利用变化的区域)和排放系数(每单位土地面积每个碳集合排放的碳量)的乘积。

然而,与其他部门不同,土地部门也包括清除量。清除系数被估计为单位面积土地利用/土地利用变化每年植被积累的碳量,并因土地利用和管理做法而异。

巴西森林的排放因子包括地上生物量、地下生物量、枯枝碳和凋落物碳;土壤碳排放量单独计算。根据 IPCC 的默认值,森林外树木的排放因子仅包括地上和地下生物量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于毁林后的每一种土地利用类型,计算了土地利用转换 20 年后保留的土壤碳的比例(例如,20 年后,80%的土壤碳保留在转换为定居点的林地中)。

把所有这些放在一起:萨尔瓦多做得怎么样?

活动数据必须包括土地使用发生变化的土地区域,以及在一段时间内保持其用途的土地。排放和清除都可能发生,因此净总 CO2 通量是所有土地面积的 CO2 排放和清除总量的总和。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在你知道了:2014 年至 2018 年间,萨尔瓦多的森林和树木是每年 58 毫克 CO2 的净汇,代表 39 毫克 CO2/年排放量97 毫克 CO2/年清除量。排放量和清除量主要是由森林以外的树木驱动的,这些树木在清单中占主导地位(清除量是森林的 2 倍,排放量是森林的 6 倍),并使土壤碳排放量相形见绌。

由于用于此的所有数据来自空间来源,我们可以应用相同的因素,同时考虑像素级的活动,这样就可以直观地显示市政区域内排放量、清除量和流量的大致分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者。数据来源:map biomass Project-Collection 5.0,巴西土地利用和土地覆盖图年度系列,于 2021 年 10 月 10 日通过链接访问:mapbiomas.org

最后的想法

结果表明,萨尔瓦多有机会通过减少非森林冠层损失的排放来进一步减少排放并增加其净吸收汇。在这种情况下,该清单可以成为一个很好的宣传工具,表明从气候变化的角度来看,森林以外的树木同样重要。

该试点严重依赖于空间数据,但地理处理操作相当简单,这可能意味着 GPC 的土地部门可以通过遵循 WRI 的**土地部门补充来轻松实施。**令人耳目一新的是,试点项目中使用的数据完全可以在巴西所有城市免费获得,并且易于获取,这意味着我们很快就可以看到全国碳库存中的土地使用缺口得到填补。

为 Power BI 中的现场参数注入活力

原文:https://towardsdatascience.com/bring-life-to-field-parameters-in-power-bi-f284394fe4cf

使用 Power BI 中的字段参数功能时,检查这个简单的技巧来增强用户体验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

老实说,我不记得有哪一个 Power BI 特性像 Fields 参数那样引起如此大的炒作,它是在 5 月 Power BI 桌面每月更新中引入的!好吧,几天后的 MS Build 事件带来了一些非常酷和有吸引力的功能,如 Datamart 或 PowerPoint 集成,这将字段参数推到了一边,但我仍然坚信字段参数是将永远改变我们在 Power BI 中构建用户体验的方式的事情之一。

我不会详细介绍这个特性本身,以及它是如何在幕后工作的,因为我的社区贡献者已经做了很好的解释。我建议你开始阅读我的朋友汤姆·马腾斯的这篇精彩文章,或者如果你喜欢看视频,可以阅读 SQL BI guys 的这篇文章。

此外,这项新功能已经有了一些非常有创意的用例,比如凯恩·斯奈德的这个

然而,在本文中,我想让您快速了解如何利用 Fields 参数为您的 Power BI 报告增添一些活力!

搭建舞台

我的数据模型非常简单:我有一个事实表和三个维度表——地区、产品和日期。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

让我们为我们的数据模型创建字段参数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

您可能注意到了,我从每个维度表中拖出了两列,一旦确认,我的报告页面上就有了一个新的切片器,使用户能够以多种不同的方式对数据进行切片和切块。并且,不需要后台复杂的 DAX!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

多酷啊!但是,如果我们想根据某些标准对字段参数值进行分组,该怎么办呢?例如,所有与产品相关的字段应属于一个组,与地理相关的字段应属于另一个组,依此类推。

我有好消息要告诉你!但是,在我向您展示如何做到这一点之前,让我们先来看看 Power BI 在创建 Fields 参数表时自动生成的底层 DAX 代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

如你所见,这是“只是”达克斯!同样,我不会详细解释每个代码部分的用途,但是理解这“只是”DAX 为定制这个表提供了可能的空间!所以,我们开始吧!

让您的数据熠熠生辉!

这个想法是将品牌和类别字段放在一个“保护伞”下,将洲和国家放在另一个“保护伞”下,最后将年和月简称也放在第三个组下。我可以简单地为 DAX 表定义的每个成员添加一个新列,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

但是,我有一个更好的主意!让我们给它带来一些活力,显示图标而不是文本!我将使用一个众所周知的 UNICHAR() 函数来提供应该被转换成图标的数值,类似于我在这篇文章中所解释的。

Slicer = {
    ("Brand", NAMEOF('Dim_Products'[Brand]), 0, UNICHAR(127981)),
    ("Category", NAMEOF('Dim_Products'[Category]), 1, UNICHAR(127981)),
    ("Continent", NAMEOF('Dim_Region'[Continent]), 2, UNICHAR(127757)),
    ("Country", NAMEOF('Dim_Region'[Country]), 3, UNICHAR(127757)),
    ("Year", NAMEOF('Dim_Calendar'[Year]), 4, UNICHAR(128198)),
    ("Month Name Short", NAMEOF('Dim_Calendar'[Month Name Short]), 5, UNICHAR(128198))
}

这是我添加了一个额外的列之后的 DAX 代码。此外,我还将新创建的列从通用的“值 4”重命名为“组”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

是时候将我们的新设置投入使用了!因此,我将把 Group 列拖动到参数切片器的字段中,就在原始字段参数值的上方:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

哇哦!现在,我的字段参数值被分组在这些漂亮的图标下,所以我的用户可以很容易地理解各种切片选项!他们仍然可以基于来自不同组的多个不同的字段快速分割数据,但是这样数据的结构和组织要好得多!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

最终实现更好的用户体验

让我们做一些额外的小魔术来进一步增强用户体验!

我想让我的用户能够自己选择如何查看矩阵中的数据!换句话说,动态选择在行和列中显示什么!

我将创建此字段参数表的副本,但这一次我将为切片器启用单选,这样,如果没有选择任何内容,矩阵不会变得过于混乱:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

厉害!现在,我们的矩阵是完全可定制的,用户可以动态选择他们希望如何查看数据—在行和列之间切换!

结论

Fields 参数是您知道会产生巨大影响的特性之一!这不仅仅是因为它开启了无限多的可能用例,还因为它易于实现,并且可以扩展定制,从而以更高效的方式回答业务问题。

感谢阅读!

订阅,不要错过任何媒体上的故事!

将秩序带入条形图的混乱中

原文:https://towardsdatascience.com/bringing-order-into-bar-chart-chaos-f271ab91a6ee

对单个多面 ggplot2 条形图中的条形图进行排序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

我们都喜欢秩序(或者至少是我们大多数人)。它帮助我们组织我们的思想,给我们一种平静的感觉。同样的原理也适用于数据可视化。我们喜欢它们整洁有序,因为这样看起来更美观,便于比较。条形图是一种可视化,其中这一点最为明显。在处理单个图表时,大多数人可能都熟悉对条形图进行重新排序。然而,我敢打赌,你们中的大多数人在刻面图上做这个会有问题。在下文中,我将展示如何使用来自世界数据库的国内生产总值(GDP)信息来解决这两种情况下的问题。

订购单个条形图

让我们只筛选四十年间世界前七大经济体:

现在,我们可以用一个条形图来比较他们的 GDP:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

比较国家有点困难,因为国家标签不是由他们的 GDP 订购的。我们可以通过使用reorder函数按照 2020 年的 GDP 对这些国家进行降序排列来解决这个问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

太好了!我们获得了一块有用的土地。然而,这只是 2020 年的图表。下一节将展示当同时显示不同年份的多个条形图时,如何对条形图进行排序。

多个图表—显示条形图

为了同时说明各国在不同时间的 GDP 对比,我们可以使用facet_wrap函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以观察到与之前相同的问题—小节没有排序。让我们试着用同样的方法来解决这个问题:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

问题依然存在!您可能会认为这可能只是这个 facet 布局的产物,因为在整个列中使用相同的水平轴标签会自动强制相同的条排序。如果是这种情况,可以通过允许每个面拥有自己的一组水平轴标签来解决这个问题。我们可以通过将facet_wrap函数的scales参数设置为“free_x”来做到这一点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这也没有解决问题,因为排序又是全局进行的。下一节将展示如何使用tidytext包绕过这个问题。

对方面进行排序

顾名思义,tidytext包是为了便于将文本转换成整齐的格式而创建的。在这里,我们将关注于reorder_within函数,它允许我们在一个 facet 中重新排序条。除了将reorder函数与reorder_within函数交换之外,我们还必须从同一个包中添加一个对scale_x_reordered函数的调用,以使其工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就是这样!我们可以看到,在过去的四十年里,美国一直保持着第一的位置。然而,中国的增长率最快,而且似乎正在接近。日本和德国设法保住了领先两个国家的位置,但其他主要欧洲经济体,如法国和英国,似乎正在落后,为印度让路。

结论

这篇文章展示了如何订购单一和多面条形图。最终的有序分面图使我们能够更容易地对世界上最重要的经济体进行比较。所以,下次你想在多面条形图之间进行比较时,你应该知道该怎么做。对于任何问题或意见,请随时发表评论。

附注:对于那些无法停止思考那些无序砖柱的人,这里有一个挠痒痒的地方:)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

数字广播:你应该知道的强大技术

原文:https://towardsdatascience.com/broadcasting-in-numpy-a-powerful-technique-you-should-know-7dc1dde619fa

广播在幕后如何运作的细节

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

唐纳德·詹纳蒂在 Unsplash 上的照片

简介

什么是广播? 广播 是一种允许Numpy**在算术运算时处理不同形状数组的机制。**在广播中,我们可以把它想象成一个较小的数组,在做某些操作之前,被“广播”成与较大的数组相同的形状。通常,较小的数组将被复制多次,直到它达到与较大的数组相同的形状。注意,我们这里说的数组指的是 Numpyndarrays,是固定大小项目的多维数组。

使用广播允许 向量化 ,这是一种处理整个数组而不是单个元素的编程风格。如果你不熟悉矢量化的概念,我写了一篇关于矢量化的文章,你可以从中了解更多。广播通常很快,因为它对数组操作进行了矢量化,所以循环发生在优化的 C 代码中,而不是较慢的 Python 中。此外,它并不真的需要存储较小数组的所有副本;相反,有更快更有效的算法来存储。

广播示例

举个例子,假设你想给一个数组添加一个常量。最天真的方法应该是这样的:

import numpy as npdata = np.array([[1,2], [3,4]])
constant_arr = np.array([[5,5], [5,5]])
data + constant_arr
# result: array([[6, 7],
                 [8, 9]])

我们定义一个和数据形状一样的数组来保存常数,然后把它们加起来。这是因为两个数组具有完全相同的形状。

但是如果这次的数据更大,比如说,是三维的。为了迎合这一点,我们将定义另一个数组来保存常数,但这一次,用了一个更大的维度:

data = np.array([[[1,2], [3,4]], [[5,6], [7,8]]])
constant_arr = np.array([[[5,5], [5,5]], [[5,5], [5,5]]])
data + constant_arr
# result: array([[[ 6,  7],
                  [ 8,  9]],

                 [[10, 11],
                  [12, 13]]])

这个管用。然而,正如您所看到的,代码似乎变得有点混乱和多余。为了提高可读性,您可能会注意到我们可以使用[np.full](https://numpy.org/doc/stable/reference/generated/numpy.full.html)函数,这将允许我们定义一个给定大小的数组,其中填充了一个特定的标量值。因此,我们可以做到:

constant_arr = np.full((data.shape), 5)
data + constant_arr
# result: array([[[ 6,  7],
                  [ 8,  9]],

                 [[10, 11],
                  [12, 13]]])

现在,这个稍微好一点。一切都很好,但是有没有办法让它更简单、更简洁?

正如你所猜测的,答案是肯定的,而实现这一点的方法就是通过广播。Numpy 允许我们处理不同形状的数组,从而使我们更容易执行操作。我们可以直接将常量添加到任何数组中,如下所示:

data + 5
# result: array([[[ 6,  7],
                  [ 8,  9]],

                 [[10, 11],
                  [12, 13]]])

这不是简单多了吗?

广播失败的地方

广播让一切变得更简洁,但它能与任意两个数组一起工作吗?

作为一个例子,让我们试着用形状为(3,)的填充了 1 的数组来添加前面的数据数组:

new_arr = np.ones(3, dtype=int)
data + new_arr

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行此示例时显示错误

这似乎给出了一个值错误。很奇怪吧。

产生错误的原因是 Numpy 无法将较小的数组(在本例中为new_arr)传播到与data数组形状相同的数组中。请记住,广播的中心思想是试图复制较小数组中包含的数据,以匹配较大数组的形状。在这种情况下,没有办法复制一个大小为(3,)的数组来匹配(2,2,2)的形状。因此,给出值 Error。

虽然广播通常允许您使用不同大小的数组,但是有一个警告。并非所有数组都可以在一次操作中一起使用。

广播规则

如果广播不能通用,广播什么时候起作用,什么时候失效?

假设我们试图在两个数组之间执行一些操作,数组 ab 。一般来说,广播的工作原理如下:

  • 如果 ab 的维数不同,那么维数较少的数组增加一个元素的维数,直到该数组的维数与另一个数组的维数相匹配。

这是什么意思?举个例子,比方说data = np.array([[1,2], [3,4]]) 我们正在努力做data + 5 *。*我们可以假设 a = data,而 b = 5。这一步将把 b 转换成np.array([[5]]),现在是二维的,形状为(1,1)

  • 一旦 ab 的维数相等,迭代过程就开始了。我们遍历 ab
    **的每个维度 i 如果 ab 的维度 i 的形状相同,那么我们继续下一个维度 i+1
    ** 否则如果 b 在维度
    I
    中的形状为 1
    否则如果 a 在尺寸 i 中的形状为 1,则复制 a 的尺寸 i+1、i+2、…、*max(len(a.shape), len(b.shape))*中的数据,直到形状与 b 相同。(与上一个 else if 相同,但这一次, a 被复制,因为它的形状更小)。
    否则,将引发“ValueError:操作数不能一起广播”,表示数组 ab 不兼容,不能广播。

回到data + 5的例子, ab 都有两个维度,分别是a.shape=(2,2)b.shape=(1,1)。我们开始迭代过程。我们从尺寸 0 开始,观察到 b 在尺寸 0 中的形状为 1。因此,我们复制了[5],通过使其成为*b=np.array([[5], [5]])*,形状现在变成了 2 ( a 在维度 0 上的形状)。现在,我们有了b.shape=(2,1) *。*接下来,我们继续下一个维度,维度 1 ,我们再次观察到 b 的形状为 1。我们复制5,使 b 的形状为 2(与 a 的形状相同),将其转换为*b=np.array([[5, 5], [5, 5]])*。由于没有更多的维度可以迭代,我们停止,导致 ab 在所有维度上的形状相同。最后,我们可以将它们逐个元素相加,得到结果np.array([[6, 7], [8, 9]])

希望这一切都有意义。这里要注意的要点是,广播试图使两个数组的每个维度的形状相同,它通过多次复制该维度中形状为 1 的数组,直到达到目标形状。

更多例子

我知道如果你是第一次学广播,有很多东西需要理解。别担心,这里还有一些例子可以帮助你更熟悉规则。

对于下面的每个示例,考虑如何转换一个数组以匹配另一个数组。

a = np.array([[2,4], [6,8]])
b = np.array([1,3])
a + b
# result: array([[ 3,  7],
                 [ 7, 11]])

在这种情况下, b 转化为b=np.array([[1,3], [1,3]])

a = np.array([[2,4], [6,8]])
b = np.array([[1], [3]])
a + b
# result: array([[ 3,  5],
                 [ 9, 11]])

这里 b 转化为b=np.array([[1,1], [3,3]])

a = np.array([[2,4], [6,8]])
b = np.array([[1,3,5], [2,4,6]])
a + b

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行此示例时显示错误

最后,在最后一个例子中,出现了 ValueError。这是因为 a 具有(2,2)的形状, b 具有(2,3)的形状,并且正如你所看到的,在尺寸 1a 和 b 都不具有 1 的形状,因此两者都不能被复制以匹配另一个。因此,这两个数组无法广播。

希望你理解了这些例子,并且记住,一旦你练习和写更多的 Numpy,你会对广播更加熟悉。随着时间的推移,这些规则会变得更加直观。

总结

如果你在这里逗留,一定要给自己一个鼓励!总而言之,我们学习了什么是广播,它在哪里失败,以及它是如何工作的。广播在 Numpy 中使用非常频繁,因此了解它在幕后是如何工作的非常重要。

我希望这篇文章很好地解释了广播背后的概念。如果你有任何问题,请告诉我,随时乐意帮忙!如果你需要的话,这里有到 Jupyter 笔记本的链接,其中包含了本文介绍的代码。

如果你刚刚写完这篇文章,但是不确定什么是矢量化或者它是如何工作的,一定要去看看我以前的文章。请随意浏览我的其他文章来了解更多。下次见,再见。

我以前的一些文章:

参考

广播,Numpy

Numpy 文档,Numpy

Numpy —广播、辅导点

Python |用 Numpy 数组广播,GeeksforGeeks

熊猫广播业务解释

原文:https://towardsdatascience.com/broadcasting-operations-in-pandas-explained-f8e00af73963

了解 Pandas 中的应用、应用映射和聚合函数的作用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自像素的免费使用照片

介绍

Apply、Applymap 和 Aggregate 函数经常用于以用户期望的方式转换变量或整个数据。我个人将这些函数称为“广播函数”,因为它们允许我们向变量或数据中的所有数据点广播某种逻辑,比如说自定义函数。在本文中,我将向您解释这三个函数的不同之处,并通过一些例子来说明这些观点。我们使用标志性的泰坦尼克号灾难数据集作为例子。具体来说,我使用了拥有公共许可证的 OpenML 中的数据集。

我们首先导入 pandas 包,并将 titanic 训练数据存储在一个名为“df”的变量中。

**# Dataset Source:** [**OpenML**](https://www.openml.org/search?type=data&sort=runs&id=40945&status=active)**; License(CC): Public****import** pandas **as** pd
df = pd.read_csv("../input/titanic/train.csv")

应用

简单地说,pandas 中的 apply 函数是一个变量级函数,您可以应用各种转换来转换一个变量。在这里,您可以利用 lambda 函数或自定义函数来创建您想要应用的转换逻辑。例如,如果出于某种原因,您希望将“Fare”变量乘以 100,您可以运行以下代码:

df['Fare'] = df['Fare'].apply(lambda x: x * 100)

有了这个想法,你就可以执行各种很酷的转换,只要你能够明智地按照你想要的方式精确地设计 lambda 或自定义函数。下面是一个代码示例,它从一些 xxxx/mm/dd 格式的字符串日期中提取月和日信息。

data['last_review_month'] = data['last_review'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").month)data['last_review_day'] = data['last_review'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").day)

应用地图

Applymap 函数是 apply 的所有数据版本,其中转换逻辑应用于数据中的每个数据点(例如,数据视图中的每个单元格)。

假设我们想把所有乘客的名字都改成小写。出于演示目的,让我们创建一个单独的数据帧,它是原始数据帧的子集,其中只有“Name”变量。

df_name = df.copy()[['Name']]df_name.head()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者

现在,我们使用 Applymap 函数来完成我们想要的。

df_name = df_name.applymap(lambda x: x.lower() if type(x) == str else x)

注意,if-else 语句可以像上面一样在 lambda 函数中编写。你可以在下面看到所有的名字现在都是小写!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者

假设我们想将类别(字符串格式)替换成相应的整数。我们可以使用 Applymap 函数来实现这一点吗?尽管 Apply 函数可能与此更相关,但我们仍然可以使用 Applymap 函数来实现相同的结果。

我们有一本字典,把性别,男性和女性分别映射到 0 和 1。

mapping = {"male":0, "female":1}df.applymap(mapping.get)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者

从上面的输出可以看出,如上所述,Applymap 函数将转换逻辑应用于每个变量中的每个数据点。因此,我们看到所有其他与“性别”变量无关的细胞都被替换为无。我们不希望这样。为了实现我们想要的,我们可以设计 lambda 函数,仅当单元格中的值是映射键之一时才替换这些值,在本例中,映射键是字符串“男性”和“女性”。

df.applymap(lambda x: mapping[x] if x in mapping.keys() else x)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:作者

现在我们看到,只有“性别”变量发生了变化,而其他变量保持不变。

聚合

最后但同样重要的是,与 Apply 和 Applymap 函数不同,Aggregation 函数返回一个新的 dataframe,其中包含用户指定的汇总统计信息。汇总汇总统计是指包括最大值、最小值、均值、中值和众数的统计。在这里,我们计算乘客的平均年龄、最大年龄和存活率。

df.groupby("Pclass").agg(avg_age = ("Age", "mean"),
                        max_age = ("Age", "max"), 
                        survival_rate = ("Survived", "mean"))

从上面的代码片段中可以看出,将 aggregation 函数与 Groupby 函数结合使用,可以成为计算不同数据点组的聚合的强大工具。

结论

在本文中,我使用了 Titanic Disaster 数据集来说明三个最常用的转换/广播函数的作用以及它们之间的区别。请继续关注我关于数据清理、机器学习、深度学习、自然语言处理等方面的更多文章。

如果你觉得这篇文章有帮助,请考虑通过以下链接注册 medium 来支持我: )

joshnjuny.medium.com

你不仅可以看到我,还可以看到其他作者写的这么多有用和有趣的文章和帖子!

关于作者

数据科学家。加州大学欧文分校信息学专业一年级博士生。

密歇根大学刑事司法行政记录系统(CJARS)经济学实验室的前研究领域专家,致力于统计报告生成、自动化数据质量审查、构建数据管道和数据标准化&协调。Spotify 前数据科学实习生。Inc .(纽约市)。

他喜欢运动、健身、烹饪美味的亚洲食物、看 kdramas 和制作/表演音乐,最重要的是崇拜我们的主耶稣基督。结帐他的 网站

拓宽视角,改变数据科学对“社会公益”的态度

原文:https://towardsdatascience.com/broadening-the-lens-and-changing-attitudes-of-data-science-for-social-good-297810d458f9

评估非营利部门的数据工作

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

中国云南红河哈尼族彝族自治州。图片作者。

主流数据科学项目侧重于数据结构、编程、算法、统计建模和机器学习。虽然预测泰坦尼克号上的幸存者已经成为数据科学培训中的一项仪式,但即使是最准确的模型也不会改变历史。虽然现成的数据集对技能培养很实用,但许多学生渴望解决现实世界的问题。在一所社会工作学校,许多学生来找我,寻找机会磨练他们的数据技能,并通过为“社会公益”而工作来建立他们的简历。

获得这种经验最直接的途径是与非营利组织一起启动一个项目。虽然存在大量的机会,但许多学生对从事清洁数据工作的前景感到失望,这些工作包括清理、准备和管理数据,而不是拓展数据科学方法的边界。我经常听说非营利组织迫切需要的数据工作类型不是“智力上有趣的”——这种态度将非营利组织的大部分数据科学支持归为周末黑客马拉松。

我尊重他人的学术兴趣。我认识到我是数据科学社区中基本技术的消费者。我永远不会突破数据科学方法的界限。成为数据科学社区的正式成员并不是我的愿望。我对解决社会和环境问题感兴趣,数据科学的策略、方法和工具为开展这类工作提供了独特的机会。

整合技术和领域专业知识

虽然集成技术和领域专业知识是数据科学定义的一部分,但许多程序并没有教如何做。因此,非营利部门的许多数据计划都需要技术专家提供低效且不可持续的数据科学解决方案。学生们需要意识到,当见解处于业务流程和组织文化中时,是可操作的。

除了组织已经在处理的数据之外,额外的分析可能不会产生更多的数据见解。更加强调整合技术和领域专业知识可以揭示有意义和可持续创新的杠杆点。例如,更复杂的分析可能没有帮助,但存在提高工作流程效率的机会。这些节省成本的选项在拥有传统数据系统的组织中非常多。自动化不是尖端的数据科学方法。尽管如此,他们仍然可以在组织内腾出宝贵的时间,让领域专家有更多的时间使用数据来解决需要专家判断的问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

危地马拉蒂卡尔的树根。图片由作者提供。

重视数据工作

大多数非营利组织没有数据,甚至不需要机器学习模型或高级统计分析。我不记得上一次遇到 p 值或相关系数能够提供有用见解的用例是什么时候了。非营利部门的大多数问题都围绕着清理、准备和管理非营利部门中杂乱的真实世界的数据。相比之下,大多数学生希望深入统计分析和机器学习。Sambasivan 和他在 Google Research 的同事在他们的论文中对这种情况进行了仔细和批判性的关注:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Sambasivan,s . Kapania,h . high fill,Akrong,d . Paritosh,p .,& Aroyo,L. M. (2021 年 5 月)。“每个人都想做模型工作,而不是数据工作”:高风险人工智能中的数据级联。在2021 年中国计算机系统人的因素会议论文集(第 1-15 页)。

他们令人信服地指出,“数据工作在许多社会技术领域被广泛低估……高风险领域的数据质量差可能对弱势群体和环境产生巨大影响。”虽然他们专门围绕人工智能进行讨论,但他们的观点准确描述了非营利部门的数据科学。

我们需要摆脱当前被动的方法,不再将数据视为“繁重的工作”。我们需要积极关注数据卓越— 关注数据管道的实践、政治和人类价值观,通过使用流程、标准、基础设施和激励措施来提高数据的质量和神圣性… Sambasivan 等人(2021 年)

许多培训情况为学生提供的研究数据集与现实世界组织中的数据几乎没有对应关系。使用干净、扁平的文件并直接进入零假设统计测试的学生对管理数据的混乱和多样性感到惊讶。Sambasivan 和他的同事对训练提出了类似的批评:

人工智能领域的学位、文凭和纳米学位的大部分课程都集中在模型开发上[42],这使得毕业生对处理数据的科学、工程和艺术准备不足,包括数据收集、基础设施建设、数据文档和数据意义制作… Sambasivan 等人(2021)

要码,还是不要码?

由于用 R 和 Python 编写代码是数据科学培训计划的一个重要焦点,学生们渴望启动一个 Markdown 文件或笔记本,并开始编写代码。基于代码的解决方案是可重复研究的基础。然而,基于代码的解决方案通常不是非营利组织的最佳选择。在与非营利组织合作时,初露头角的数据科学家应该保持对业务流程动态本质的了解,无论其免税地位如何。

从这个角度来看,基于代码的解决方案对组织来说可能是不可持续的。例如,假设您使用 R 或 Python 自动化管理报告。当他们添加另一个数据流时会发生什么?他们能够调整 R 或 Python 代码来引入这些新数据吗?虽然我的实证研究涉及基于代码的解决方案,但我发现,对于非营利组织的日常数据工作来说,无代码和低代码的解决方案可能更快、更可持续。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

中国算盘。图片由作者提供。

我鼓励学生们保持谨慎,不要盲目地将可再生研究的价值强加给非营利部门。对于大多数数据项目来说,再现性确实是必要的。但是,我们应该考虑再现性的,而不是把它看作一个非此即彼的问题。无代码和低代码的解决方案通常有一个配方,它充分描述了你如何从 A 点到达 B 点,但可能没有一套清晰定义每一步的计算机代码那么优雅。许多问题通常不需要这种详细程度。如果不考虑效率和可持续性,组织可能会因投资于可再生解决方案而损失宝贵的资源。

组织能力建设

当你有技术专长时,非营利组织的一些数据问题很容易解决。然而,培养组织能力来解决他们的数据问题通常是更好的解决方案。从这个角度来说,数据科学家的帽子需要换成数据老师的帽子。与“我自己做更快”的态度相比,组织可能会获得更大的长期收益同样,这一点又回到了理解业务环境中的数据。我遇到很多学生拿着 的解答找问题 。我鼓励寻求“社会公益”体验的学生理解组织最紧迫的问题,而不是是否存在运行回归分析或机器学习模型的机会。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Rube Goldberg 的自运营餐巾纸是在找问题的解决方案。图片来自维基百科。

接下来的步骤

无可否认,我对数据科学在非营利领域的发展持乐观和悲观态度。乐观地说,我看到了帮助非营利组织提高战略性使用数据的效率和有效性的巨大机会。然而,我们是否能吸引更多具有数据专业知识的人在非营利部门工作,需要我们如何评价数据工作的根本转变。有时,直接而优雅的数据问题解决方案可以让非营利组织受益匪浅。在学术界,受到重视的数据科学方法会产生行业资金。但是,我们必须小心,不要让资助成为影响的最终衡量标准。这是我悲观的一面。最终,希望将他们的技能应用于社会公益的学生必须首先理解组织的使命,然后是组织最紧迫的问题,最后是他们的数据。

我是密歇根大学的社会工作教授,对帮助学生做好准备和帮助非营利组织利用数据和信息技术更聪明地工作感兴趣,而不是更努力。如果您有兴趣了解非营利部门的数据创新,请关注我。

Bryan R. Vallejo 利用地理空间科学和实时数据来帮助生态保护

原文:https://towardsdatascience.com/bryan-r-vallejo-leverages-geospatial-science-and-real-time-data-to-help-ecological-conservation-3ff7ca8fb007

作者聚焦

“有时,我只是散散步,了解我所处的环境,并试图揭示模式。”

在 Author Spotlight 系列中,TDS 编辑与我们社区的成员谈论他们在数据科学领域的职业道路、他们的写作以及他们的灵感来源。今天,我们很高兴与 布莱恩·r·瓦莱约 分享我们的对话。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由布莱恩·r·瓦列霍提供

Bryan 在厄瓜多尔天主教大学获得地理和空间规划学士学位,后赴塔尔图大学攻读地理信息学硕士学位。他在赫尔辛基大学完成了 GIS 自动化专业的学位。作为数字地理实验室的前访问成员,他一直参与利用新的大数据源进行的专注于人类移动的研究。

在他专业化的一年中,他迷上了海洋野生动物迁徙及其与海洋生态地理变量的相互作用,并开发了 海洋野生动物跟踪器 ,这是一个专门用于实时跟踪和卫星数据检索的地理框架。

Bryan 目前在一家爱沙尼亚私营公司工作,开发带有移动定位数据的客户定制 GIS 解决方案。下班后,他会去上舞蹈课来激励自己,给自己充电。在业余时间,他支持加拉帕戈斯群岛的海洋保护项目,用海洋巨型动物遥测数据实现他的平台。

是什么激发了你对地理和数据交叉的兴趣?

我真的可以说,当我意识到我将成为一名地理学家的那一刻,是在我大学的第一堂地图学课上。我喜欢地图制作,因为这是一种很好的数据交流方式。在我的一生中,我一直被数字、信息学和工作流所吸引,所以数据是我的东西——但是当它成为地理空间数据时,它把我带到了一个全新的世界。

我在人口统计学实践中发现了地理空间处理,我对从空间单位角度发生的转换、聚合、计算和其他类型的数据处理着迷。最终的地图传达了关于社会状况的信息。我很高兴我能够完成这个创造性的分析过程。

当然,我遇到了挑战。当我想操作国家人口普查数据库时,我意识到我的桌面软件开始崩溃,这是我的极限。那时我有一个问题:接下来会发生什么?

答案是什么?

我想以最正式的方式应对我的挑战,所以我开始寻找专注于地理空间分析的研究生课程。幸运的是,我在世界的另一端得到了一个机会,我毫不犹豫的勇往直前,寻找我从地理学向地理信息学转型的下一波机会。

这听起来像是一个重大的转变。

说实话:这个过程中最困难的部分是离开我的祖国,进入一个充满日常挑战的新文化。但是从最艰难的时刻,我找到了继续发展自己的动力。

当我学习地理空间分析的编程语言时,我克服了自己的极限。蟒蛇是我的盔甲。我花了一年半的时间才在数据操作方面打下坚实的基础。到了第二年,我跳过地理空间物体,感觉就像水中的一条鱼。我发现了新工具,开发了流程,学习了技巧,还分享了许多教程。同样,我得到了开放科学的支持——所以我决定回馈社会。

所以现在我在这里,自动化地理空间过程,创建具有现代可视化的分析工作流,并尝试扩展我的分析。

最近,你最感兴趣的是哪种以数据为中心的项目——你希望在职业生涯的下一阶段关注哪些主题?

我已经看到了新一波的项目集中在实时 GIS 上。我喜欢深入这个似乎很有潜力的领域。这是一个地理空间工作流,从实时数据检索开始,然后是动态算法,最后是地图:一个对数据的每一次变化做出反应的漂亮漏斗,提供关于当前情况的见解。

我决定开始自己的实时 GIS 项目,并从 2021 年开始一直致力于此。实际上有很多选择,但我决定选择生态保护*。*在接下来的几个月——我希望是几年——我想继续致力于我的野生动物跟踪实时监控系统,该系统已经有了不错的结果,并在现场实施。我热爱自然,对我来说,一切似乎都与野生动物和生态系统的变化联系在一起,这就像魔法一样。

更具体地说,我想在大数据可扩展性的算法开发和实施方面进一步发展自己。当然,我会添加一个漂亮的地图,这样最终用户可以清楚地看到消息。

我说的是我的个人愿望和我的爱好项目,但是当然,我也乐于看到在我的职业道路上会发生什么。我很想成为一个愿意大规模开发地理信息学解决方案的伟大团队中的一员,在这里我可以找到我的下一个层次。

是什么促使你开始公开写自己的作品?

在我的职业发展过程中,自动化地理空间过程成为一项轻松愉快的日常任务。我可以大大减少花在分析过程上的时间,并且能够在地图上找到见解并进行交流。

我脑子里积累了很多想法,很难继续做其他事情,因为我一直带着旧的想法。我需要解放他们,把他们从我的头脑中解放出来,当我写下我的第一个故事时,我感到如释重负。就好像我减轻了一些重量,我的头脑中有了更多的空间来容纳更多的想法。

我在 Medium 和 Data Science 上读到了一些不错的帖子,所以我决定加入并分享我的分析故事。我从开放科学中学到了很多,社区发展模式也很好很友好,所以我很高兴能给世界上其他人提供可以使用的材料。

对于选题,我可以说我有点主题化。我要做的第一件事是选择一个原始数据集,其中包含足够的信息来寻找见解。这取决于我的心情——例如,它可以是社会空间分析、环境、城市,或者仅仅是写我工作的野生动物跟踪系统的应用和使用。然后,我选择一个地理空间过程,引导我找到我想要传递的信息。最后,我创建了一个精心制作的地图,向人们传达最终的信息。

你有什么特别的技巧来激发你的创造力吗?

有时候,我只是走一走,了解我所处的环境,并试图揭示模式。城市是有生命的,看到它们的行为很奇妙。有一次,我对赫尔辛基有这么多人骑自行车感到震惊。我很好奇,想在一个过程中真正看到这种模式,所以我写了一个关于在夏天聚合自行车路线的故事

我感觉最激动的时刻是在故事的开头,因为我需要打开话题,降落在我的想法的路径上。最好给它时间。我把这个话题搁置了一个星期,直到我开始分析。对我来说,重要的不仅是主题,还有你的心情和你想讲述故事的地方。

你有什么建议给那些想写自己数据相关工作,但不知道从哪里开始或如何找到时间的人吗?

毫无疑问。对于有很好的数据相关工作,愿意和人分享的,我可以从两个角度来建议。

第一个是个人的。写作时找到你的时间和安宁。记住,故事是你思想的一面镜子,所以最好保持清晰。我知道工作可能会持续很长时间,很难找到时间写作。选择一个你感觉自由的日子,放松,喝茶,找个地方。

我可以说,我的许多良好开端都是在穿着睡衣的时候发生的。此外,倾听你的内心和沉默:这将帮助你组织你的想法。要系统,一天一天写。从介绍开始,休息。写正文,休息。分析,睡觉,设计你的结果,然后继续。哪怕每个月发一个故事,你也心满意足了。

第二个角度是技术性的。确保你正在写一篇引人入胜的介绍,并且你正在揭示这个主题及其与人类的相关性。然后,明确故事的目的。你可以陈述一个可以用一个分析过程解决的目标——没有必要包括很多。对我来说,一个好故事需要五到十五分钟的阅读时间。

对于分析,保持简单,突出技术水平,不要详尽无遗。如果你正在编码,找到一个好方法使代码可共享和可重用,这将使其他人感激。在故事的结尾,只要结束你在写作中打开的部分——一个引导你使用分析和解决你陈述的目标的段落。最后,最重要的一点:把你的帖子看一遍两遍,根据需要改正或澄清。你会觉得信息的传递有多好。

现在,我可能会重新倒满我的一杯茶…

无论是在你自己的子领域还是更广泛的数据科学领域,你希望在不久的将来看到什么变化?

嗯,我真的可以说地理空间科学的发展已经到了我希望的时刻。如果你看一看,大多数地理空间教育材料是开放的,许多资源是开放的,并且在社交媒体上有一个广泛的地理空间社区可以回应你的询问和疑问。接下来会发生什么?

有时我会感到震惊:我可以用一种感觉就像一个刚刚学会如何打开电视的孩子的方式连接到卫星。尽管我觉得这很离谱,但我后来意识到,有人在创造我正在使用的工具。因此,这是一个受到社区支持的知识领域。

地理空间科学的未来是什么?对我来说,地理科学的最后一个创新学派是时间地理学,它涉及到以时间的功能作为其第三维来研究地理现象。我很认真地对待这个未来,所以在过去的两年里,我一直专注于时空分析。

当然,我已经看到了现代 GIS,这是一个引导地理空间科学走向全球和可扩展水平的新趋势。它指的是使用可组合和开发的开放工具来分析空间数据,并以自动化的方式提供有用的见解。老实说,我不喜欢这个新趋势的名字,因为它表明这是最后的和最终的范式。相反,我会根据它的目的来命名它,即在全球范围内扩展。所以我认为在不久的将来真正的新趋势应该被命名为云 GIS。

云 GIS 可以真正在全球范围内扩展,并提供计算资源来运行能够洞察空间数据的模型。我也认为“实时”是这一新趋势的一部分。对于(地理空间)数据科学的未来,我会说它的道路不应该集中在统计模型上,因为它们从 70 年代就已经被开发出来了。如今有更多创新的应用领域,因此地理空间科学的视野应集中于其在现实生活中的使用,并提高人们在日常生活中的舒适度。这个新趋势的迷人之处在于它可以被任何人访问。

要了解布莱恩的更多工作,并了解他的最新项目,请点击 MediumTwitter 关注他。如果你没有读过他以前的文章,这里有一个来自 TDS 档案的样本:

想和广大观众分享一些你自己的作品吗?我们很乐意收到你的来信。

为了长度和清晰起见,编辑了这个 Q。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值