TowardsDataScience 博客中文翻译 2021(一百一十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

《超越销售》中的先验分析

原文:https://towardsdatascience.com/apriori-analysis-in-r-beyond-sells-ffdf56c1d95c?source=collection_archive---------46-----------------------

apriori 算法经常用于所谓的“购物篮分析”中,以确定给定商品是否与其他商品一起被更频繁地购买(就像著名的啤酒和尿布的例子)。由于这是一个相当特殊的用例,我想测试一下我是否能在一个不处理销售的数据集中发现任何模式。我从来自蘑菇数据集开始,这里的包含了来自 Audubon Society 的北美蘑菇野外指南的蘑菇记录,仅限于蘑菇属和蘑菇属中的 23 种带菌蘑菇。潜在的假设是,我将根据他们的描述重新提取不同的物种。
顺便说一句,有一种蘑菇是众所周知的广泛传播的沙拉/比萨饼/汤/把你的菜放在这里配料:普通的蘑菇双孢蘑菇:

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

资料来源:达科尼,CC BY-SA 2.5,https://commons.wikimedia.org/w/index.php?curid=671026

首先,我们读入数据文件并从 agaricus-lepiota.name 文件中获取列名。为了更好地呈现表格,我必须翻转它,这样您可以看到列和行交换了,但仍然可以破译所有列名和前几行。数据集包含 22 列和 8124 行。对每个特征中的参数分布执行快速检查,我们检测到列“veil_type”只包含一个值,因此我们可以删除它,因为它不提供任何附加信息来对蘑菇进行分类。

path <- "my path on computer"
df <- read.table(file.path(path, "agaricus-lepiota.data"), sep=",")
names <- c("edible","cap_shape", "cap_surface", "cap_color", "bruises","odor","gill_attachment","gill_spacing", "gill_size","gill_color","stalk_shape","stalk_root","stalksurface_abovering","stalksurface_belowring","stalkcolor_abovering","stalkcolor_belowring","veil_type","veil_color","ring_number","ring_type","sporeprint_color","population","habitat")
colnames(df) <- names
as.data.frame(t(head(df))) #the table is flipped for demonstration purposes#check, if there are columns of constant values
for (i in 1:ncol(df)){
  if(length(table(df[,i], exclude=NULL))<2){
    print(colnames(df)[i])
  }
}
table(df$veil_type, exclude=NULL)
#veil_type has only 1 value
df <- df[ , -which(names(df) %in% c("veil_type"))]

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

接下来,我们加载库并将数据集转换成 arules 包中实现的 apriori 算法所期望的形式。

library(arules)
for (i in 1:ncol(df)){
  df[,i] <- paste(colnames(df)[i], df[,i], sep=".")
}
## create transactions
fungi <- as(df, "transactions")

为了对算法有一个感觉,我首先试图找到一些与蘑菇的可食用性相关的规则(尽管,正如已经提到的,这不是分析的目标。先验的优势应该是它的特征识别能力,而不考虑目标,因为它通常是普通机器学习分类算法的情况)。该规则是与特征“可食用”相关联的特征的组合,其形式为“{x,y,z} = >可食用”(给定 x,y,z,特征“可食用”跟随其后)。然而,我需要设置一个门槛,来确定我对某个规则有多自信。这可以通过改变不同的标准来实现:
支持度告诉我们,在数据集中观察到特定特征组合的频率,例如,0.1 的支持度对应于 0.1 x 8124 = 812 个样本,这意味着至少 812 个样本符合规则“x & y & z &可食用”。
规则的置信度是指给定其左侧的特征组合的频率:置信度({x,y,z} = >可食用)= x & y & z &可食用/ x & y & z。此关系回答了以下问题:在数据集的所有蘑菇样本中,符合规则“x & y & z”的,有多少也符合“x & y & z 【T24arules 包的实现算法也允许控制规则的最小和最大长度(minlen,maxlen)。让我们来看看:

library(tidyverse)
supps <- c(); confs <- c(); nums <- c()
for (supp in seq(0.3, 0.7, by=0.05)){
  for (conf in seq(0.5, 0.9, by=0.05)){
    #run apriori algorithm looping over different support and confidence levels
    rules <- apriori(fungi,parameter = list(supp = supp, conf = conf, target = "rules", minlen=2,maxlen=22))
    #limit set of rules to ==>"edible"
    rules_sub <- subset(rules, subset = rhs %in% "edible=edible.e")
    #extract results
    supps <- c(supps,supp); confs <- c(confs, conf); nums <- c(nums,rules_sub@lhs@data@Dim[2])
  }
}
#combine results to data frame
results <- data.frame(support=supps,confidence=confs, count=nums)
results %>% arrange(desc(confidence)) %>% head(.)

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

我们看到,0.4 x 8124 = 3249 个蘑菇样本符合两个规则,其中“可食用”条件的置信度为 0.9。还不错。让我们仔细看看这些:

#repeat modeling with pre-selected thresholds for support and confidence
rules <- apriori(fungi,parameter = list(supp = 0.4, conf = 0.9, target = "rules", minlen=2,maxlen=22))
#limit set of rules to ==>"edible"
rules_sub <- subset(rules, subset = rhs %in% "edible=edible.e")
inspect(rules_sub)

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

这就是了。apriori 算法已经确定了这样的规则,即如果没有气味,蘑菇是可食用的。这条规则的置信度为 0.97,这意味着 97%的无气味蘑菇是可食用的(在我们的数据集中!).> 1 的 lift (可以解读为气味和可食用性之间的一种相关性)告诉我们,这两个特征之间存在正相关关系。第二条规则更有趣一点。它告诉我们,宽鳃(鳃大小)和环上光滑的柄表面与蘑菇的可食用性有正相关。至少在 94%的宽鳃、光滑柄的伞菌标本中发现了它。
让我们用一个快速而肮脏的随机森林简单地检查一下结果,如果我们得到了鉴别可食用性的相似特征:

library(caret)
table(df$edible)
fit_control <- trainControl(method = "cv",number = 10)
set.seed(123456)
rf_fit <- train(as.factor(edible) ~ .,data = df,method = "rf",trControl = fit_control)
rf_fit
saveRDS(rf_fit, file.path(path, "fungiEdibility_RF_model.rds"))
rf_fit <- readRDS(file.path(path, "fungiEdibility_RF_model.rds"))
varImp(rf_fit)

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

不错!随机森林还选择气味作为区分食用蘑菇和毒蘑菇的最重要特征。但这不是我们分析的目标。我们仍在寻找数据集内的 23 个不同物种或任何有趣的模式。

因此,我再次运行该算法,现在不是寻找规则,而是寻找频繁的特征组合。我将特性集的最小长度设置为 15。

#run apriori
itemset <- apriori(fungi,parameter = list(supp = 0.1, conf = 0.98,target = "frequent", minlen=15,maxlen=22))
#get top items
top_items <- data.frame(as(items(itemset), "list"))
top_items <- cbind(as.data.frame(t(apply(top_items,2,function(x) sub("[[:alpha:]]+_?[[:alpha:]]+=", "", x)))),itemset@quality)
#spread top items into a tidy dataframe
df2 <- df[0,]
colnames(df2)
for (rownr in 1:nrow(top_items)){
  for (cols in 1:(ncol(top_items)-3)){
        feature <- substring(top_items[rownr,cols], 1, unlist(gregexpr("\\.", top_items[rownr,cols]))-1)
        type <- substring(top_items[rownr,cols], unlist(gregexpr("\\.", top_items[rownr,cols]))+1)
      for (i in 1:ncol(df2)){
        if(feature==colnames(df2)[i]){
          df2[rownr,i] <- type
        } 
    }
  }
}
#exclude columns which have never been selected by apriori 
non_na_cols <- c()
for (k in 1:ncol(df2)){
  if(sum(is.na(df2[,k]))!=nrow(df2)){
    non_na_cols <- c(non_na_cols,colnames(df2)[k])
  }
}
df2[,non_na_cols]

在这里,我再次翻转表格,以便您可以更好地阅读。我还添加了由算法识别的不同特征的选定级别的翻译。

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

有趣的是,该算法只识别了可食用蘑菇的模式,这可能是因为有毒蘑菇的可变性更高,而不是可食用蘑菇。我们还看到,有一个所有特征集共有的子特征集(可食用&木质&擦伤&无气味&无鳃&鳃间距紧密&鳃宽&茎尖逐渐变细&球茎根&茎表面光滑&白色面纱&一个垂环)。这个典型的特性集让我强烈地想起了按钮蘑菇。让我们看看这个描述在确定物种方面能走多远。网页提供了不同蘑菇种类的检索表。从第一页开始,我们浏览描述。由于我们没有读到任何关于我们的蘑菇生长在其他蘑菇上的东西(而是在树林中独居),问题 1 引出了问题 2,我们肯定地回答了问题 2(我们的蘑菇有鳃)。我们进一步遵循这个关键:3)不像上面那样→ 4)腮不沿着茎向下延伸(我们的腮是自由的)→去腮蘑菇。到目前为止,一切顺利。该链接将我们带到下一个页面。根据检索表,我们得到:1)有面纱,没有鱼腥味→ 2)孢子不是粉红色的→ 3)鳃不是黄色的,没有沿着茎向下延伸→ 4)孢子印痕不是橙色的→ 6)孢子印痕是深色的(棕色,黑色)。我们只在两个特征集中有这个特征,但是我假设如果偏离到淡色蘑菇是重要的,它会被算法拾取。跟着上的键,我们就到了(我在这里省略了键的读数,如果你愿意,你可以从头到尾走一遍):1 → 3 → 12 → 21 → 26 →蘑菇。太好了,算法找到了一些蘑菇的共同特征。我们在网页上读到了一个不太乐观的说法,“你不应该期望能够识别你收集的每一个蘑菇”。事实上,前两个问题已经让我们没有了答案,因为切片时的肉色特征或蒙特利柏树关联在数据集中没有得到解决。我猜奥杜邦协会野外指南的原始答案可能会对这个问题有所启发,然而不幸的是我没有获得这个资源。唯一令人欣慰的是,如果对白色瓶盖的颜色回答“是”,就会出现双孢蘑菇按钮。

那么,从这个玩具分析中,我的收获是什么呢?该算法明确地选择了所有蘑菇属蘑菇共有的特征集。然而,我会猜测,从 8124 个样本/ 23 个物种=每个物种 353 个样本开始,该算法会选择其他物种共有的特征集。事实上,对数据集进行快速主成分分析清楚地表明,可食用(绿色)和有毒(红色)样品中存在明显的聚类,很可能对应于不同的物种。

theme_set(theme_classic())
#encode factors to hot-one, as PCA works on numeric features only
dummy <- dummyVars(" ~ .", data=df, fullRank=T)
df_hotone <- data.frame(predict(dummy, newdata = df))
mypca <- prcomp(df_hotone) ;  myscores <- mypca$x[,1:3] #scores
#add PCA results to table 
df_hotone_PCA <- cbind(df_hotone,myscores)
ggplot(df_hotone_PCA, aes(PC1,PC2))+
  geom_point(aes(color=factor(edibleedible.p, levels=c("1","0"))))+
  theme(legend.position = "none")+
  labs(title="Principal component analysis on mushroom dataset",subtitle = "colored by edibility", caption = "red = poisonous; green = edible")

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

作者图片

这就结束了这个相当令人失望的分析。我猜想,为了破译对应于数据集不同物种的特征集,需要进一步调整 apriori 算法或转向另一种方法。肯定是有提升空间的,所以还是撸起袖子继续分析吧……另一个故事。

阿拉伯语自然语言处理:独特的挑战及其解决方案

原文:https://towardsdatascience.com/arabic-nlp-unique-challenges-and-their-solutions-d99e8a87893d?source=collection_archive---------6-----------------------

使用 camel-tools Python 包为机器学习预处理阿拉伯文本

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

理查德·佩格林的授权图片

在这篇文章中,我提供了一个简明扼要的概述,介绍了在 NLP 项目中使用阿拉伯文本所面临的挑战,以及克服这些挑战的可用工具。我非常依赖于 NYU 阿布扎比骆驼实验室开发的骆驼工具(camel-tools)和 Python 包(Python package),以及由主任 Nizar Habash 博士(T7)主持的精彩网络研讨会。为他们在这一领域所做的开创性工作以及让公众可以使用他们的工具而大声欢呼吧!

挑战

在 NLP 项目中使用阿拉伯文本面临(至少)5 个独特的挑战:

  1. 字符的形式和单词的拼写可以根据它们的上下文而变化(奇特的术语:拼写歧义)
  2. 同一个动词可以有数千种不同的形式(字面上的意思)
  3. 阿拉伯语有许多方言,它们之间有很大的差异
  4. 由于阿拉伯语是一种语音语言(你写的就是你说的),当用方言阿拉伯语写作时,可以有不同的方式来写同一个单词,对此没有一致同意的标准(拼写不一致)。

阿拉伯语的这四个不同特征都有助于数据稀疏。因为有许多不同的单词形式、潜在的不同拼写以及大量的方言,最终可能会有一个 NLP 词汇表达到数百万个单词。这并不是夸大其词:阿拉伯语中的一个动词可以有多达 5400 种形式。)相比之下,英文最多有 6 篇,中文只有 1 篇。

解决方法

但是不要害怕!当你被困在资源匮乏的语言的沙漠中,而你的管道停留在一些液体代码上,让你继续前进的时候…会出现一只神奇的、用户友好的骆驼**来帮助你:

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

图片经由https://giphy.com/gifs/flaticons-xsWJYMcYexVQJbHzLS

pip install camel-tools

**我们将把对这个方案的公然自我东方化名称的后殖民评论留到下一天,好吗?

下面我将分享我使用 camel-tools 软件包预处理我的阿拉伯文本和处理阿拉伯语言带来的独特挑战的步骤。

注意:我假设你已经完成了所有基本的、通用的 NLP 预处理,比如删除重复字符、停用词、表情符号、标签、数字,以及任何 NLP 项目中的其他最佳实践数据清理任务。下面提到的 Github repo 包含了一个完整的阿拉伯停用词列表*,它解释了前面提到的拼写歧义*。重要提示:确保将单词“يا”添加到文件中,因为这个词目前不包括在内,而且是一个非常常见的停用词。

注意,NLTK 还包含一个阿拉伯停用词库,但是这个集合忽略了许多常见的拼写不一致。

https://github.com/mohataher/arabic-stop-words

好了,现在让我们开始吧!

第一步:去分化

第一步是通过删除文本的附加符号来减少一些严重的数据稀疏。音调符号是位于阿拉伯文本字母上方或下方的符号(在某些情况下相当于英语中的元音),即下图中的蓝色标记。

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

资料来源:en.wikipedia.org

根据上下文,同一个单词可能有不同的发音符号,因此通常的做法是删除这些符号以减少数据稀疏。

从技术上讲,这实际上产生了一个新的问题,因为同一个词根可能有完全不同的意思,这取决于你给它的音调符号……但是我们将在第 4 步处理这个问题。

步骤 2:减少拼写歧义

为了解决各种方言中常见的拼写不一致问题(因为一般来说阿拉伯语口语和书面语之间的差距),下一步是减少拼写歧义。具体来说, camel-tools 通过从特定字母(teh-marbuta 中的点和 alef 中的 hamza)中移除特定符号来实现这一点。

第三步:简单单词标记化

下一步只是一个简单的单词分词器。我们需要这样做,以便能够将我们的文本输入到下一步的函数中。

步骤 4:形态歧义消除

这就是事情变得有趣的地方。还记得我在第一步结束时说过,去掉音调符号实际上会产生一个新问题吗?我们现在只有字根,但从技术上讲,我们无法知道它可能是众多不同单词中的哪一个。例如,下面的单词可能意味着:‘和我们的合同/项链/精神病或’‘,他强调我们【T3]’,这取决于使用的发音符号、上下文和它所用的方言。

وبعقدنا

那么…我们应该选择这个单词的哪种形式呢?

camel-tools 软件包带有一个漂亮的“词法分析器”,简而言之,它将你输入的任何单词与一个词法数据库(它带有一个内置的)进行比较,并输出该单词可能的形式和含义的完整分析,包括词条、词性、英语翻译(如果有的话)等。

下面我们对单词’وبعقدنا’.进行一个词法分析

我在下面包含了输出的一部分;这些只是它返回的 20 多个分析中的前 3 个。请注意,它还通过恢复音调符号来“消除”单词的歧义。

{'diac': 'وَبِعُقَدُنا', 'lex': 'عُقْدَة_1', 'bw': 'وَ/PART+بِ/PREP+عُقَد/NOUN+ُ/CASE_DEF_NOM+نا/POSS_PRON_1P', 'gloss': '[part.]_+_by;with+complexes+our', 'pos': 'noun', 'prc3': '0', 'prc2': 'wa_part', 'prc1': 'bi_prep', 'prc0': '0', 'per': 'na', 'asp': 'na', 'vox': 'na', 'mod': 'na', 'stt': 'c', 'cas': 'n', 'enc0': '1p_poss', 'rat': 'i', 'source': 'lex', 'form_gen': 'm', 'form_num': 's', 'pattern': 'وَبِ1ُ2َ3ُنا', 'root': 'ع.ق.د', 'catib6': 'PRT+PRT+NOM+NOM', 'ud': 'PART+ADP+NOUN+PRON', 'd1seg': 'وَبِعُقَدُنا', 'd1tok': 'وَ+_بِعُقَدُنا', 'atbseg': 'وَ+_بِ+_عُقَدُ_+نا', 'd3seg': 'وَ+_بِ+_عُقَدُ_+نا', 'd2seg': 'وَ+_بِ+_عُقَدُنا', 'd2tok': 'وَ+_بِ+_عُقَدُنا', 'atbtok': 'وَ+_بِ+_عُقَدُ_+نا', 'd3tok': 'وَ+_بِ+_عُقَدُ_+نا', 'bwtok': 'وَ+_بِ+_عُقَد_+ُ_+نا', 'pos_lex_logprob': -4.923429, 'caphi': 'w_a_b_i_3_u_q_a_d_u_n_aa', 'pos_logprob': -0.4344233, 'gen': 'f', 'lex_logprob': -4.923429, 'num': 'p', 'stem': 'عُقَد', 'stemgloss': 'complexes', 'stemcat': 'N'} 

{'diac': 'وَبِعُقَدنا', 'lex': 'عُقْدَة_1', 'bw': 'وَ/PART+بِ/PREP+عُقَد/NOUN+نا/POSS_PRON_1P', 'gloss': '[part.]_+_by;with+complexes+our', 'pos': 'noun', 'prc3': '0', 'prc2': 'wa_part', 'prc1': 'bi_prep', 'prc0': '0', 'per': 'na', 'asp': 'na', 'vox': 'na', 'mod': 'na', 'stt': 'c', 'cas': 'u', 'enc0': '1p_poss', 'rat': 'i', 'source': 'lex', 'form_gen': 'm', 'form_num': 's', 'pattern': 'وَبِ1ُ2َ3نا', 'root': 'ع.ق.د', 'catib6': 'PRT+PRT+NOM+NOM', 'ud': 'PART+ADP+NOUN+PRON', 'd1seg': 'وَبِعُقَدنا', 'd1tok': 'وَ+_بِعُقَدنا', 'atbseg': 'وَ+_بِ+_عُقَد_+نا', 'd3seg': 'وَ+_بِ+_عُقَد_+نا', 'd2seg': 'وَ+_بِ+_عُقَدنا', 'd2tok': 'وَ+_بِ+_عُقَدنا', 'atbtok': 'وَ+_بِ+_عُقَد_+نا', 'd3tok': 'وَ+_بِ+_عُقَد_+نا', 'bwtok': 'وَ+_بِ+_عُقَد_+نا', 'pos_lex_logprob': -4.923429, 'caphi': 'w_a_b_i_3_u_q_a_d_n_aa', 'pos_logprob': -0.4344233, 'gen': 'f', 'lex_logprob': -4.923429, 'num': 'p', 'stem': 'عُقَد', 'stemgloss': 'complexes', 'stemcat': 'N'} 

{'diac': 'وَبِعُقَدِنا', 'lex': 'عُقْدَة_1', 'bw': 'وَ/PART+بِ/PREP+عُقَد/NOUN+ِ/CASE_DEF_GEN+نا/POSS_PRON_1P', 'gloss': '[part.]_+_by;with+complexes+our', 'pos': 'noun', 'prc3': '0', 'prc2': 'wa_part', 'prc1': 'bi_prep', 'prc0': '0', 'per': 'na', 'asp': 'na', 'vox': 'na', 'mod': 'na', 'stt': 'c', 'cas': 'g', 'enc0': '1p_poss', 'rat': 'i', 'source': 'lex', 'form_gen': 'm', 'form_num': 's', 'pattern': 'وَبِ1ُ2َ3ِنا', 'root': 'ع.ق.د', 'catib6': 'PRT+PRT+NOM+NOM', 'ud': 'PART+ADP+NOUN+PRON', 'd1seg': 'وَبِعُقَدِنا', 'd1tok': 'وَ+_بِعُقَدِنا', 'atbseg': 'وَ+_بِ+_عُقَدِ_+نا', 'd3seg': 'وَ+_بِ+_عُقَدِ_+نا', 'd2seg': 'وَ+_بِ+_عُقَدِنا', 'd2tok': 'وَ+_بِ+_عُقَدِنا', 'atbtok': 'وَ+_بِ+_عُقَدِ_+نا', 'd3tok': 'وَ+_بِ+_عُقَدِ_+نا', 'bwtok': 'وَ+_بِ+_عُقَد_+ِ_+نا', 'pos_lex_logprob': -4.923429, 'caphi': 'w_a_b_i_3_u_q_a_d_i_n_aa', 'pos_logprob': -0.4344233, 'gen': 'f', 'lex_logprob': -4.923429, 'num': 'p', 'stem': 'عُقَد', 'stemgloss': 'complexes', 'stemcat': 'N'}

现在,在我的情况下,我正在处理超过 600 万条推文,所以进行逐字分析不会提供太多信息或有效。相反,我们可以使用形态学消歧器(小心,阿诺德!)来为我们做这件事。这将接受一个标记列表作为输入(因此是步骤 3 中的简单单词标记器),并输出所有消除了歧义的标记形式。每个分析都是一个字典,我们可以使用字典键访问我们想要的表单和组件。这些分析按照可能性从大到小的顺序排列,因此通常的做法是简化,将第一个分析指定为输出。

它输出句子中每个单词的二进制形式、词性标记和词条:

('نَجَحَ', 'verb', 'نَجَح-a_1')
('بايدن', 'noun_prop', 'بايدن_0')
('فِي', 'prep', 'فِي_1')
('الاِنْتِخاباتِ', 'noun', 'ٱِنْتِخاب_1')

例如,这意味着我们可以使用如下函数获取阿拉伯文本的所有词条:

对于我进行主题建模的项目,这是我选择的进行标记化的方式。其他项目可能需要使用形态学标记器的不同方法,它将根据您选择的方案对字符串进行不同的标记。

所以…只要找到最适合你的项目的记号化/词条化方法,执行它,然后你就完成了阿拉伯文本的预处理!

更多骆驼乐趣

camel-tools 包提供了更多的预处理特性(比如音译、unicode 标准化等)。)可能对你的项目有用。查看完整的文档以获取更多信息。

此外,我只想指出,我做了大量的研究,试图找到为 NLP 预处理阿拉伯文本的最佳工具。虽然有许多其他好的选择(如 Farasa、MADAMIRA 和 Stanford CoreNLP ),但我发现 camel-tools 是最通用、最全面、最易于使用的。除了用于处理上述挑战的核心预处理功能,它还具有一些很酷的额外功能:它可以进行情感分析,并且——这确实是最酷的功能之一——它可以识别文本所用的方言(最多 25 种方言)。我肯定会使用方言标识符将“方言”作为一个特性添加到我的 NLP 管道中。

感谢您的阅读!在 LinkedIn 上关注我,了解定期的分布式计算更新和技巧。

请考虑成为支持写作社区的媒体成员:

https://richardpelgrim.medium.com/membership

多任务学习中的阿拉伯语句子嵌入

原文:https://towardsdatascience.com/arabic-sentence-embeddings-with-multi-task-learning-815801024375?source=collection_archive---------21-----------------------

实践教程

阿拉伯语自然语言处理教程,通过多任务学习创建阿拉伯语句子嵌入,实现快速高效的语义文本相似性任务。

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

UJI 友子Unsplash 上拍摄的照片

在这个阿拉伯语自然语言处理(NLP)系列的第一篇文章中,我介绍了一个名为 AraBERT 的 transformer 语言模型(来自 Transformers 的阿拉伯语双向编码器表示),由 Antoun et al. (2020) 发布,它在各种阿拉伯语 NLP 基准上表现得非常好。作为典型的最新语言模型,AraBERT 非常大,基本模型有 1.1 亿个参数,大模型有 3.4 亿个参数。当考虑到这些语言模型的规模时,显而易见的是,在语用研究者和最先进的自然语言处理工具的使用之间存在可访问性差距。

正如一个人对资源的访问所决定的,前沿语言模型的卓越结果可以通过大量的生产考虑来强调。例如,研究人员可能会受到计算资源可用性的限制,这种费用不可避免地需要在金钱和时间之间进行权衡。除了令人望而却步的成本,社会研究极大地受益于 NLP 的应用,特别是因为数据驱动的方法提供了研究常见问题的替代角度。这对于中东和北非(MENA)等研究不足的地区尤为重要,在这些地区,纳入阿拉伯文本不仅对问责制至关重要,也有助于避免西方偏见。

在去年写的一篇文章中,我讨论了我对 transformer 语句嵌入的兴趣,这是我在的一篇研究论文中遇到的想法,该论文详细描述了从 Transformer 语言模型中训练高效语句嵌入。这篇论文描述了 NLP 任务,如从一组 10,000 个句子中找到最相似的句子对,通过评估语义文本相似性(STS)来确定,将需要使用 AraBERT 这样的 transformer 语言模型进行 5000 万次推理计算。这将需要大约 65 个小时才能完成,这使得 AraBERT 不适合语义相似性搜索或无监督的任务,如聚类。由泛在知识处理实验室的研究人员设计的聪明的解决方案是使用一个暹罗网络架构来训练变形金刚句子嵌入;这使得前面提到的 STS 任务可以在大约 5 秒钟内完成。

他们的创造句子-BERT (SBERT),非常适合 STS 任务,本教程用代码概述了使用多任务学习(MTL)将这个 NLP 工具扩展到阿拉伯语。我受到了 UKP 实验室的句子转换库中共享的示例脚本的启发(由 SBERT 作者 Nils Reimer 创建和维护),它实现了 MTL 来训练英语句子嵌入模型。在本教程中,我首先提供一些关于 STS 和句子嵌入的背景知识,然后讨论 MTL。接下来,我描述了用于训练阿拉伯语句子嵌入模型的实验设置(我将其命名为 SAraBERT),随后是 MTL 训练的完整代码演练,并对该过程进行了直观的解释。最后,我在一个阿拉伯语的 STS 基准上评估了训练过的模型,并提供了利用这个工具进行社会研究的想法。

语义文本相似度和句子嵌入

STS 与一对句子之间的意义相似度有关,可以用余弦相似度或曼哈顿/欧几里德距离等相似度度量来衡量。直观上,句子嵌入可以理解为一种将句子映射到向量的文档处理方法,作为一种用适合机器学习的实数表示文本的手段。给定一个句子集合,句子嵌入可以用来将文本单元转换成表示特征的固定大小的输出向量,然后在整个句子集合中进行比较。比较是可能的,因为句子被映射到向量空间,使得语义相似的句子更加接近。以这种方式评估语义相似性对于各种 NLP 任务是有用的,包括信息检索、释义识别、重复问题检测和摘录文本摘要。

在 SBERT 发布之前,其他不太有效的方法被用来从像 BERT 这样的转换模型中创建固定大小的句子嵌入。最常见的是,均值池用于平均 BERT 的输出层,或者通过使用[CLS]令牌(BERT 嵌入中的第一个令牌,分类令牌)的输出。SBERT 作者表明,这两种类型的句子嵌入在 STS 任务中表现不佳,通常比平均的手套单词嵌入(使用全局统计学习单词向量表示的无监督算法)更差。这是值得注意的,因为与手套单词嵌入相比,来自 BERT 类型模型的单词嵌入在大多数 NLP 基准上具有显著更高的分数。然而,平均单词嵌入的不良表现表明,单独汇集不能产生非常适合句子级相似性任务的句子嵌入。

这使得像 SBERT 这样的句子嵌入成为必要,SBERT 使用一个连体结构,其中两个网络具有绑定的权重。为了在 STS 任务中获得最佳性能,SBERT 从预先训练的 BERT 模型开始,并使用一个连体设置来微调模型;首先在自然语言推理(NLI)数据集上,然后在 STS 数据集上进一步微调。

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

在 NLI 数据集上微调句子嵌入的 SBERT 暹罗网络体系结构。出处。

从上图可以看出,当微调 NLI 数据集时,两个句子嵌入 uv 是从合并的伯特单词嵌入中产生的。它们与基于元素的差⏐u-v⏐连接,然后乘以可训练权重(wt);其中 W t ∈ ℝ ᵏ* ,并且 n 是句子嵌入的维度, k 是标签的数量。这可以由下面的分类目标函数来表示,该分类目标函数通过交叉熵损失来优化。

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

在 NLI 数据集上微调句子嵌入的分类目标函数。图片作者。

当在 STS 数据集上进行微调时,使用回归目标函数,其中通过计算两个句子嵌入 uv 之间的余弦相似度,并且使用均方误差损失作为损失函数。回归目标函数表示为余弦 _sim ( uv )损失函数为:| |input _ labelcos _ score _ transformation(余弦 _sim ( uv)| |,其中默认cos _ score _ transformation为 a

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

SBERT siamese 网络架构,具有回归目标函数,用于对 STS 数据集进行微调。来源。

多任务学习

MTL 依赖于知识的归纳转移;不是孤立地为单个任务训练模型,而是可以并行地为几个相关的任务训练模型,以便在任务之间共享学习到的信息。引用卡鲁阿纳(1998) 经由塞巴斯蒂安·鲁德的话,“MTL 通过利用相关任务的训练信号中包含的特定领域信息来提高概括能力。”。对于深度神经网络的多任务学习的可访问概述,我建议 Ruder 关于主题的博客文章,为了简洁起见,我在本文中限制了细节,并专注于高级概念。

本质上,这种学习方法利用任务之间的共性和差异来训练更好地概括的模型。通常,正则化通过统一惩罚复杂性来防止过度拟合;然而,相比之下,MTL 正则化是通过要求在相关任务上的良好表现来诱导的。换句话说,存在一种归纳偏差,即模型倾向于解释一个以上任务的假设,这种偏好提高了泛化能力。这种归纳偏差意味着 MTL 在小数据集或类标签欠采样时特别有效。除了正则化,MTL 还引入了隐式数据增强和注意力集中。从某种意义上说,MTL 隐含地增加了样本量,允许模型学习更一般的表示;这是因为,联合学习两个任务平均了来自不同任务的数据相关噪声模式。MTL 的注意力集中是通过突出重要特征来实现的,这是可能的,因为该模型从其他任务中获得了特征相关或不相关的额外证据。

自 2018 年以来,根据对可用文献的调查,MTL 已多次被用于阿拉伯语自然语言处理研究,特别是与阿拉伯方言有关的翻译模型,以及社交媒体上的攻击性语音检测。2019 年, Abdul-Mageed et al. 使用句子级 BERT 模型和句子级 MTL 模型,从带注释的阿拉伯语推文中对年龄和性别进行分类;在一项研究中,他们发现 MTL 双任务模型不如单任务伯特模型。研究人员将他们的模型描述为语言不可知的,因为他们的模型建立在句子级别的多语言 BERT(MBERT)模型上,并针对阿拉伯文本样本的分类任务进行了微调。我选择了一种不同的方法,我创建了一个句子级的阿拉伯语 BERT 模型(SAraBERT ),它已经用阿拉伯语 NLI 和 STS 数据进行了微调。这是因为我对特定于阿拉伯语的句子嵌入感兴趣,这些句子嵌入可以用于 STS 任务,比如文本摘要。此外,当前最先进的阿拉伯文本分类方法是使用 AraBERT 单词嵌入(发布于 2020 年)。

实验设置

在本教程中,MTL 用于在一个共享任务中对两个数据集(NLI 和 STS)的句子级阿拉伯特(SAraBERT)模型进行微调,而不是每次对每个数据集的单个任务进行顺序微调。具有交叉熵损失的分类目标函数用于 NLI 数据集,具有均方误差损失的回归目标函数用于 STS 数据集。联合学习包括来自每个任务的一个批次与其他任务的所有其他批次相匹配;这种循环匹配以迭代的方式发生。直觉告诉我们,任务之间共享信息会提高概括能力。我使用前面提到的来自 UKP 实验室的句子变形器 Python 库,对于本教程,我使用非分段 AraBERT 模型的第二个版本“bert-base-arabertv02”,它可以通过 Huggingface 模型获得。

由于没有开源的特定于阿拉伯语的 NLI 数据集可用,对于 NLI 数据集,我从脸书的跨语言 NLI 语料库(XNLI) 中分割出 2490 个阿拉伯语句子对。根据假设和前提之间的关系,这些阿拉伯语句子对被标记为文本蕴涵,每个前提/假设对被标记为“蕴涵”、“矛盾”或“中性”。特别使用 NLI 数据集,因为逻辑蕴涵不同于简单的等价,并且为学习复杂的语义表示提供了更多的信号。

最受欢迎的阿拉伯语 STS 基准, SemEval-2017 STS ,只有 1081 个句子对是从英语翻译过来的。出于对翻译质量和数据集大小的考虑,我选择使用最近发布的由问题对组成的阿拉伯语语义相似度数据集。阿拉伯语语义问题相似度(SQS) 数据集来自 2019 资源不足语言 NLP 解决方案研讨会,包含 12,000 个问题对,这些问题对根据两个问题之间的语义相似度标记为“是”或“否”。SQS 数据集比 SemEval-2017 STS 大得多,而且它的优势在于使用阿拉伯语原文。

用多任务学习训练阿拉伯语句子嵌入

本教程的所有代码都是使用 Pytorch 框架的 Python 代码。我建议使用 Google Colab 笔记本,利用自由层 GPU 实例来加快训练速度。第一步是导入所需的包,这些包在下面的代码片段中列出。

下一步是加载 XNLI ( nli_data )和阿拉伯语 SQS ( sts_data )训练数据集。我们从 XNLI 中分离出阿拉伯语句子对( arabic_nli_data ),然后我们在训练期间分割阿拉伯语 SQS 训练集用于验证数据( sts_data_train,sts_data_test ),同时保存实际测试集作为维持数据以评估最终模型。

接下来我们将“bert-base-arabertv02”设置为 model_name ,并设置训练时保存模型的输出路径。这里,批处理大小设置为 16,这将很容易在 16GB 的 GPU 上运行,这是 Colab 自由层云 GPU 的默认大小。使用三个独立的模块来构建模型:单词嵌入层、均值汇集层和密集层,这些模块堆叠在一起,使得每个连续的模块都从前一个模块的输出开始。最大序列长度设置为 256,其大小与密集层的输出特征相匹配,以保证生成的句子嵌入具有最大序列长度 256。

一个 label2int 字典将字符串标签“矛盾”、“蕴涵”和“中性”分别映射到 0、1 和 2。创建一个空数组来保存样本,这些样本是从Arabic _ nli _ datadata frame 迭代追加的。每个样本都是[‘sentence1 ‘,’ sentence2 ‘,’ label_id’]的列表,这些样本必须加载到 Pytorch 数据加载器中。最后,我们从前面描述的分类目标函数中设置一个损失函数,在这里被视为 SoftmaxLoss。

对于 STS 数据,需要两个空数组,一个用于培训样本,另一个用于开发样本。样本以列表的形式迭代地添加到它们各自的数组中:[‘question1 ‘,’ question2 ‘,’ label_id’]。与 NLI 数据类似,样本被加载到 Pytorch 数据加载器中。余弦相似性损失用于损失函数,其中先前描述的回归目标函数通过余弦相似性得分的均方误差损失来优化。此外,我们创建了一个评估器来使用开发样本测试嵌入的相似性,这一过程也允许我们在训练期间选择最佳模型。

最后,我们为训练设置了几个参数,周期数设置为 4,10%的训练数据用于预热,评估设置为每 1000 步进行一次。训练目标是一个元组列表,每个元组对有一个数据加载器和损失函数,每个任务有一个元组。当拟合模型时,在整个 4 个时期中每 1000 步进行一次评估,并且从每个评估阶段保存最佳模型。

训练后,最后一步是在 STS 测试集中的维持数据上评估模型。为测试样本创建一个空数组,并以类似于 STS 训练数据的方式作为[‘question1 ‘,’ question2 ‘,’ label_id’]列表进行加载。然后加载模型,并创建测试评估器来测试来自测试样本的嵌入的相似性。

下面显示的结果是余弦相似性、曼哈顿距离、欧几里德距离和点积相似性,通过皮尔逊相关斯皮尔曼相关指标测量。在 2016 年的一篇题为 面向任务的语义文本相似性内在评估的论文中,Reimer 等人得出结论,皮尔逊相关性的内在评估具有误导性,Spearman 相关性度量更适合评估 STS 任务。通过这种度量,SAraBERT 获得了 83.94%的分数,Spearman 相关性代表了准确确定两个问题是否相似的能力。

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

在阿拉伯语义问题相似性基准上保持测试数据的评估。图片作者。

下一步包括试验其他方法来训练阿拉伯语句子嵌入,并评估 SAraBERT 能够在多大程度上总结阿拉伯语文本或执行语义搜索。在 Colab 中训练 SAraBERT 只需要不到 5 分钟的时间,而且有了个人电脑,就可以相当快地为大型语料库生成阿拉伯语句子嵌入。

最后的想法

如果过去几年有任何迹象,越来越大的语言模型的趋势将继续主导 NLP 领域,使研究人员有必要关注可访问性。我将资源限制视为创造力的挑战,幸运的是,有一个大型开源社区共享代码和预先训练的模型。尽管有这些模型,但是,实现的实用性取决于正确地将工具与任务结合起来。使用 SAraBERT 进行快速有效的阿拉伯语句子嵌入,使得快速利用各种依赖语义搜索的 NLP 技术成为可能。就我的研究而言,这使得为政策评估进行文本摘要和信息检索的实验变得容易。此外,可以将 SAraBERT 用于无监督的任务,如基于句子嵌入的语义相似性的聚类,这为主题识别的任务提供了对传统统计模型如潜在狄利克雷分配的深度学习替代。

MTL 是一个有趣的 ML 范例,我怀疑有更好的选择来训练 STS 任务的句子嵌入,这是我打算在未来探索的一条途径。在我看来,SAraBERT 是一种低资源方法,建立在低资源语言 NLP 工具(AraBERT)上,在低资源设置下训练(免费 GPU +训练时间< 5 mins). My hope is that this cobbled-together creation born out of necessity, will provide utility for other researchers interested in applying Arabic NLP techniques to social research. I welcome questions and feedback, please feel free to connect with me on Linkedin 。最后,非常感谢 UKP 实验室和 Nils Reimer 开源资源,使得本教程成为可能。

牛油果有弹性吗?

原文:https://towardsdatascience.com/are-avocados-elastic-9d072e47605c?source=collection_archive---------37-----------------------

Python 中需求价格弹性(PED)的温和介绍

2016–2017 年你在哪里?我在纽约——这个城市引领了从时尚到美食,从娱乐到音乐的潮流。我加入了马车,并参与了一些,但有一个让我难以忘怀的是鳄梨面包或鳄梨色拉酱。

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

照片由 Unsplash 上的 Dainis Graveris 拍摄

2017 年,牛油果价格飙升,牛油果价格飙升;我在当地全食超市花了 3.65 美元买了一个哈斯鳄梨。有一个笑话说,所有的千禧一代都很穷,和父母住在一起,因为他们把所有的钱都花在牛油果吐司上了。出于某种原因,这种水果被认为是优质的,并标有较高的价格;其中一个原因是需求。可能还有其他宏观经济因素,如季节性、竞争、天气等,但或多或少,正如我们从经济学理论中得出的结论,价格在很大程度上受需求驱动。

简单来说,如果某样东西不贵,就会有更多的人买,如果某样东西贵,就会有更少的人买。借助于一个叫做 PED(需求价格弹性)的概念,这种确切的行为被量化了。

我想用以下问题来分析这个概念:

1.随着时间的推移,鳄梨的供求之间有关系吗?

2.牛油果的需求价格弹性是多少?

3.需求仅仅取决于价格还是还有其他因素?

1.需求价格弹性

PED 测量的是需求 Q 的百分比变化,在其他条件不变的情况下,价格变化 1%。

PED =(∂Q/∂P ) * P/Q

∂Q 是需求的变化,∂P 是价格的变化。

弹性一词与敏感性同义。

在经济理论中,弹性是衡量需求或供给对价格的敏感程度。在市场营销中,消费者对产品价格的变化有多敏感。

2.为什么是 PED?

我为什么要为我的产品/商品/服务衡量 PED?

  1. 它可以帮助我做出更好的定价决策,即我可以为我的产品设定的最佳价格
  2. 如果我降低价格,对需求会有什么影响?
  3. 提高或降低价格,收入会下降还是上升?

PED 也可以为许多其他问题提供一个起点。

有了这个基本的了解,让我们继续前进,让我们的绿色手指工作。

3.数据

鳄梨价格数据可在 Kaggle 上获得,它捕捉了 2015 年至 2018 年水果的平均价格以及销售量。

鳄梨爱好者会注意到三个栏目:

4046 —小型/中型哈斯牛油果(~ 3-5 盎司牛油果)

4225 —大哈斯牛油果(约 8-10 盎司牛油果)

4770 —特大号哈斯牛油果(~ 10–15 盎司牛油果)

其余的不言自明。

让我们加载数据。

sf = tc.SFrame.read_csv("avocado.csv")
sf.print_rows(3)

哦,顺便说一下…我用的是苹果的 turicreate 框架(【https://github.com/apple/turicreate】T2),你可以很容易地安装它,使用:

pip install -U turicreate

如果你发誓忠于熊猫数据帧,那么你也可以使用它,或者如果在执行过程中你不喜欢 turicreate,那么你可以使用

df = sf.to_dataframe()

有几个难看的列名,我们先修复一下

sf = sf.rename({'Total Volume': 'Volume'})
sf = sf.rename({'Total Bags': 'Bags'})
sf = sf.rename({'4225': 'twent_fv_Av'})
sf = sf.rename({'4046': 'for_si_Av'})
sf = sf.rename({'4770': 'sev_sev_Av'})sf.print_rows(3)

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

作者图片

4.简单的功能

我试图绘制数据,但 18,249 点没有多大意义。所以,我们暂时把数据卷起来,看看会发生什么。

让我们从数据列中编造一个“季度”变量。

qtr = []
for item in sf['Date']:
    date_i = dt.datetime.strptime(item, '%Y-%m-%d')
    qtr.append((date_i.month + 2) // 3)
sf['qtr'] = qtr

将按季度和年度汇总数据的临时 SFrame:

sf_g = sf.groupby(['year', 'qtr'], tc.aggregate.MEAN(
    'Volume'), tc.aggregate.MEAN('AveragePrice'))
sf_g = sf_g.sort(['year', 'qtr'])# Let's treat the ugly names of the columns as well
sf_g = sf_g.rename({'Avg of Volume': 'Volume', 'Avg of AveragePrice': 'Price'})

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

作者图片

让我们画出曲线

tc.visualization.set_target(target='browser')
tc.show(sf_g['Price'], sf_g['Volume'], xlabel="Price",
        ylabel="Demand", title="Demand-Supply Curve")

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

作者图片

不像我们在教科书中看到的那样是一个明显的下降趋势,但是如果我们仔细观察,那么随着价格的上升,鳄梨的销量或多或少会下降。

也许我需要一个更好的曲线。

5.需求-供给

让我们暂时转向熊猫数据框架,绘制价格和交易量的时间序列。

df_g = sf_g.to_dataframe()def plt_x(): fig, (a1, ax2) = plt.subplots(nrows=2, sharex=True, subplot_kw=dict(frameon=False), figsize=(15, 8))    plt.subplots_adjust(hspace=.0)
    ax1.grid()
    ax2.grid() ax1.plot(df_g['Price'], color='g')
    ax2.plot(df_g['Volume'], color='b')
    ax1.set_ylabel('Price')
    ax2.set_ylabel('Volume') plt_x()

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

作者图片

当我们从 2015 年到 2018 年遍历 13 个数据点时,价格上升的峰值对应着成交量的低谷,反之亦然。

这是一个更好的图表,证实了需求和供给的经济理论。

我们需要更有力的东西来证实我们的假设,也许是统计方法。

6.OLS 造型

Statsmodels 提供了一种进入 OLS 的简单方法,这就是我们将在这里使用的方法。

零假设:价格和交易量之间没有关系。

数据集有趣的一点是 Volume = ’ 4046 ‘+’ 4225 ‘+’ 4770 '+Bags;所以,我们可以选择模型中的变量。

df = sf.to_dataframe() # SFrame to datafamemodel_1 = ols(
    " AveragePrice ~ twent_fv_Av + Bags", data=df).fit()print(model_1.summary())

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

作者图片

p 值小于α = 0.05(显著性值),因此可以拒绝零假设。

上面那款的问题是 R 相当差。这表明,就鳄梨而言,价格不仅是需求的函数,也是其他因素的函数。

让我们做一些改变。

我们有“类型”变量,它极大地影响水果的价格,有机的比传统的要贵。我们可以将它包含在模型中。

X = df[['twent_fv_Av', 'Bags','type', 'qtr']]
y = df['AveragePrice']#Encode the categorical variable.
X = pd.get_dummies(X, prefix=["type"], columns=["type"], drop_first = True)

再次拟合模型。

mod = sm.OLS(y, X).fit()
mod.summary()

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

作者图片

用图形解释结果会更直观。

fig = plt.figure(figsize=(8, 8))
fig = sm.graphics.plot_partregress_grid(mod, fig=fig)

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

作者图片

在部分回归图中可以看到一些趋势(每个变量对响应变量的影响,即平均价格)

我不会说他们强壮,但我见过更糟的。

1.模型的 r 看起来很好,这意味着 4 个变量结合起来解释了价格值中 88%的可变性。还不错!

2.除了“袋子”之外,所有袋子的 p 值都小于α = 0.05,表明它们对价格有影响。

因此,鳄梨的价格取决于鳄梨的数量、种类和销售季度。

7.PED 和产品

我们知道 PED 公式,但它在现实世界中代表什么呢?

简单规则:

PED > 1:弹性产品

PED < 1: Inelastic product

Elastic products are those that are highly sensitive to price changes i.e. a small change in price can cause a major shift in demand. Luxury products such as cars, perfumes etc should be elastic because they are discretionary items i.e. 他们是‘想要’而不是需要。

无弹性产品是指那些对价格变化不太敏感的产品,即即使价格大幅变化也不会对需求产生重大影响。 为生活寄托的物品落在队列中 。如果你生病了,那么你会买 5 美元或 10 美元的药。

我认为牛油果应该是一种弹性产品,它的 PED 应该是> 1 *。*让我们来了解一下。

鉴于较大的数据集更嘈杂,让我们使用一个卷到季度。

def plt_reg():
    fig, scatter = plt.subplots(figsize=(15, 7))
    sns.set_theme(color_codes=True)
    sns.regplot(x=df_g['Price'], y=df_g['Volume'])plt_reg()

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

嗯…我们知道 PED =(∂Q/∂P ) * P/Q

∂q/∂p =(0.7–1.1)/(1.2–1.7)= 0.8

P/Q = 1.7/0.7 = 2.42

PED = 1.94

不出所料,PED 因鳄梨> 1 而使其成为一种有弹性的商品。

源代码可以在我的 Github 上找到。

鳄梨酱时间到了

我一直在寻找的三个问题的答案:

1 **。随着时间的推移,鳄梨的供求之间有关系吗?**是的,从图表和统计数据来看,情况也是如此。统计模型的 R 为 0.88,这意味着模型中包含的变量解释了价格的大量变化。

2.牛油果需求的价格弹性是多少? PED 值为 1.94,这是意料之中的,因为鳄梨应该属于弹性产品。

3.需求仅仅取决于价格还是还有其他因素?是的,鳄梨的种类、季度销售日期是决定销售量的几个重要因素。

我欢迎反馈和建设性的批评。你可以在推特上找到我

情绪是普遍的吗?

原文:https://towardsdatascience.com/are-emotions-universal-55945cd7e0fa?source=collection_archive---------16-----------------------

如果是这样,我们如何使用神经网络从面部表情中预测它们?

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

腾雅特Unsplash 上拍摄的照片

背景和调查目的

在过去的几十年里,在认知科学领域,特别是在情绪理论的主题上,一直存在着争论。一方面,我们有保罗·艾克曼博士,他为情感“自然种类”的存在辩护。他的工作重点是面部表情及其普遍性,以及创造能够揭示这些情绪的测谎仪(Ekman,1997)。这些自然的种类构成了我们使用的基本的、熟悉的名字:“快乐的、愤怒的、厌恶的、恐惧的”。

另一方面,我们有丽莎·巴雷特博士,她为建构主义方法辩护。她的主张是,大脑是一个贝叶斯猜测机器,我们基于几个背景因素来解释情绪(Barret,2006)。对她来说,“皱眉”在某些情况下可能意味着悲伤,在其他情况下可能意味着失望。如何对情感进行分类的决定归结为“细微差别”,而且没有“正确”的答案。

因此,通过这个项目,我打算探索一个具有大约 30,000 幅训练集图像的 Kaggle 数据集,这些图像已经被“正确”分类为具有 7 种情绪之一:愤怒、厌恶、恐惧、快乐、悲伤、惊讶和中性(Pierre-Luc 和 Aaron,2013)。

请找到我在这里使用的确切数据集:【https://drive.google.com/open? id = 1 jztiq 9 fayu 4 tym vy 06 HLM 5 _ BZRthhcxq。

用主成分分析法研究自然物质

我首先使用主成分分析研究数据集,以发现面部表情中最具决定性的成分,以及是否有(a)几个重要的成分定义了暗示“自然种类”的表情,或者(b)无数个重要的成分暗示了更微妙的“构建”表情。

导入数据

Kaggle 网站上的数据以 CSV 表格的形式呈现。第一列是对人脸上呈现的情绪进行分类:(0 =愤怒,1 =厌恶,2 =恐惧,3 =快乐,4 =悲伤,5 =惊讶,6 =中性)。

第二列包含编码面部的黑白像素的一串值。下面我解码每个字符串条目,并把它们编码成 numpy 数组。

解码了上面的面部图像后,我使用下面的 matplotlib 可视化了前 32 张图像,以确保数据真正转化为图像:

PCA 分解

0.83781
0.92312

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

图片由作者提供。

正如我们所见,两种分解的碎石图是相似的。对于两者,解释的方差数量呈指数下降,最重要的主成分解释了略低于 0.3 (30%)的方差。因为主成分和解释的方差之间的指数性质,我们用 50 个成分解释了总方差的大约 84%,用 150 个主成分解释了方差的大约 92%,即使我们将成分的数量增加了三倍。向前看,由于解释了增加的方差,我将集中使用 150 分解,尽管我预期我的分类算法对于 150 比对于 50 运行得更慢。

主成分重构

现在我已经将每张图片分解成 150 个主要成分,我们可以看看前几个成分是什么样子的,并确定我们是否可以收集一些关于研究问题的见解:

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

图片由作者提供。

这些乍一看不是很有定论!但是也许通过更仔细地检查其中的一些,我们可以确定一些关于情绪范围的事情。让我们首先关注第一张图片。

第一主分量是具有 48×48 个分量的特征向量。我们可以通过将该特征向量乘以两个不同的特征值来研究维度是如何变化的,并注意图像是如何变化的:

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

图片由作者提供。

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

图片由作者提供。

这个特征向量似乎主要与区分面部颜色和背景颜色之间的对比度有关,而与面部表情的差异关系不大。

看着上面的主成分网格,在我看来,数字 14 可能会编码微笑或皱眉或类似的事情。让我们再看一看:

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

图片由作者提供。

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

图片由作者提供。

讨论和 PCA 结论

首先,除了发现主要组件看起来令人不安之外,我不认为组件的可视化对讨论有任何结论性的帮助。如果至少有几个主要成分清楚地编码了光谱两端的情绪,如“快乐”与“悲伤”,这可能是对自然物种假说的有力支持,但我没有找到这方面的证据(尽管我没有彻底调查每一个成分)。

然而,碎石图也许能提供更多的信息。请注意方差解释是如何呈指数下降的,最初几个主成分之后的后续主成分只增加了一个增量解释。这可能指向人类情感内在的细微差别。当然,这些主成分还编码了与面部结构、肤色、头发等相关的几个特征,因此仅基于它们做出任何界定都是不明智的。也就是说,如果 scree 图真的是相当细微差别存在的证据,这可能是一个支持情感构成的论点。“自然类型”的情况可能会给每种情绪带来很少的区别特征,但这不是我们所看到的:看着可视化,一些似乎编码了眼睛形状,眉毛弯曲,嘴巴形状,以及总共 150 个特征(它们加起来只能解释 92%的面部和表情)。

卷积神经网络可以读取情绪吗?利用 VGG16 迁移学习找出

训练模型

Train on 28709 samples, validate on 7178 samples Epoch 1/10 28709/28709 [==============================] - 1s 21us/step - loss: 13.9044 - accuracy: 0.6616 - val_loss: 1.7528 - val_accuracy: 0.7947 Epoch 2/10 28709/28709 [==============================] - 0s 17us/step - loss: 1.0365 - accuracy: 0.8257 - val_loss: 0.7941 - val_accuracy: 0.8380 Epoch 3/10 28709/28709 [==============================] - 0s 16us/step - loss: 0.6320 - accuracy: 0.8465 - val_loss: 0.5995 - val_accuracy: 0.8471 Epoch 4/10 28709/28709 [==============================] - 0s 16us/step - loss: 0.5235 - accuracy: 0.8521 - val_loss: 0.5234 - val_accuracy: 0.8503 Epoch 5/10 28709/28709 [==============================] - 0s 15us/step - loss: 0.4732 - accuracy: 0.8545 - val_loss: 0.4846 - val_accuracy: 0.8518 Epoch 6/10 28709/28709 [==============================] - 0s 16us/step - loss: 0.4443 - accuracy: 0.8557 - val_loss: 0.4585 - val_accuracy: 0.8530 Epoch 7/10 28709/28709 [==============================] - 0s 15us/step - loss: 0.4266 - accuracy: 0.8562 - val_loss: 0.4412 - val_accuracy: 0.8536 Epoch 8/10 28709/28709 [==============================] - 0s 16us/step - loss: 0.4146 - accuracy: 0.8566 - val_loss: 0.4312 - val_accuracy: 0.8537 Epoch 9/10 28709/28709 [==============================] - 0s 16us/step - loss: 0.4068 - accuracy: 0.8568 - val_loss: 0.4229 - val_accuracy: 0.8540 Epoch 10/10 28709/28709 [==============================] - 0s 15us/step - loss: 0.4014 - accuracy: 0.8569 - val_loss: 0.4183 - val_accuracy: 0.8542 <keras.callbacks.callbacks.History at 0x7fb56aa64e80>
Train on 28709 samples, validate on 7178 samples Epoch 1/10 28709/28709 [==============================] - 8s 273us/step - loss: 0.5901 - accuracy: 0.8247 - val_loss: 0.4090 - val_accuracy: 0.8571 Epoch 2/10 28709/28709 [==============================] - 8s 267us/step - loss: 0.4036 - accuracy: 0.8558 - val_loss: 0.4004 - val_accuracy: 0.8570 Epoch 3/10 28709/28709 [==============================] - 8s 272us/step - loss: 0.3980 - accuracy: 0.8569 - val_loss: 0.4008 - val_accuracy: 0.8571 Epoch 4/10 28709/28709 [==============================] - 8s 271us/step - loss: 0.3954 - accuracy: 0.8570 - val_loss: 0.4012 - val_accuracy: 0.8571 Epoch 5/10 28709/28709 [==============================] - 8s 271us/step - loss: 0.3938 - accuracy: 0.8571 - val_loss: 0.4032 - val_accuracy: 0.8572 Epoch 6/10 28709/28709 [==============================] - 8s 265us/step - loss: 0.3928 - accuracy: 0.8571 - val_loss: 0.4057 - val_accuracy: 0.8572 Epoch 7/10 28709/28709 [==============================] - 8s 263us/step - loss: 0.3919 - accuracy: 0.8571 - val_loss: 0.4019 - val_accuracy: 0.8571 Epoch 8/10 28709/28709 [==============================] - 8s 262us/step - loss: 0.3918 - accuracy: 0.8571 - val_loss: 0.4018 - val_accuracy: 0.8572 Epoch 9/10 28709/28709 [==============================] - 8s 265us/step - loss: 0.3911 - accuracy: 0.8571 - val_loss: 0.3973 - val_accuracy: 0.8572 Epoch 10/10 28709/28709 [==============================] - 8s 266us/step - loss: 0.3905 - accuracy: 0.8571 - val_loss: 0.3964 - val_accuracy: 0.8572 <keras.callbacks.callbacks.History at 0x7fb56a8ad780>

评估模型和结论

我们想要评估上述两个模型(基于 PCA 的神经网络和 VGG16 迁移学习神经网络)的最重要指标是验证准确性(显示在拟合过程的输出中)。对于 PCA 模型,我们的验证准确率为 85.42%,对于 VGG16 模型,我们的验证准确率为 85.72%。值得注意的是,这两个结果如此接近,因为第一个是基于简化数据运行的非常简单的模型,第二个是基于从一个获奖算法中提取的特征。VGG16 模型花了 1 分 20 秒来训练,另外 3 分钟用于特征提取过程(总共 4 分 20 秒)。然而,PCA 模型仅花费 3 秒来训练,PCA 分解步骤花费大约 1 分钟(大约 1 分 3 秒)。这意味着精度提高 0.3%需要付出 3 分 17 秒的代价。这还不包括开发 VGG16 算法所花费的时间和精力,相比之下,在 PCA 分解图像上使用简单得多的神经网络。

关于研究问题,这些精度值能告诉我们什么?这两个比率都非常高。这些比率类似于一些专业人员在更确定的类别的分类任务中获得的比率(Shorten,2018 年,讨论了一种类似的方法来将图像分类为狗或猫,他的准确率约为 72%)。

“狗”和“猫”这两个类别是自然的,而不是人类构造的,这一点有很强的论据。我们可能会采用物种形成的传统生物学界限:这两种动物既不能一起繁殖,也不能产生可繁殖的后代(Endler,1977)。关键是,我们的神经网络在对情绪进行分类方面比类似的网络在对科学上离散的类别进行分类方面做得更好。这支持了面部表情表达的情感至少有一些明显不同的类别。

当然,那些反对存在离散的、自然的情感类别的人会争辩说,他们并不反对我们无法对某人的情感做出正确的猜测。他们会特别指出,我们表达情绪的方式强烈依赖于文化因素,因此,我们可能会因为文化习俗而给某人的面部表情贴上标签,而不是因为对不变的、离散的类别有深刻的了解。

我的方法还有进一步的限制。首先,我们的样本可能有偏差。如果我们正在调查情感类别的“普遍性”,那么让我们所有的图像都属于某个特定国家的人将是令人不安的(我没有找到关于这个图像集的人口的特定描述)。第二,研究人员如何选择和分类这些图像可能存在偏见(注意,研究人员不仅为情绪强加了七个类别的存在,而且他们还寻找符合他们自己对这些类别的理解的图像)。数据集的庞大在一定程度上抵消了这些担忧。

当然,观察面部表情可能只是谜题的一部分,而不是争论双方的决定性证据。尽管如此,这个项目强调了即使是机器学习的适度应用也可以为我们提供关于人类大脑如何工作的宝贵见解。今天,研究人员正在使用类似的神经网络来研究可能成为情绪过程基础的大脑路径,从而在不同的分析水平上看待这个问题(Raz,Winetraub,Jacob,Kinreich,Maron-Katz,Shaham,& Hendler,2012)。

参考

巴雷特,L. F. (2006 年)。情绪是自然的吗?。心理科学的观点,1(1),28–58。

埃克曼博士(1997 年)。欺骗,撒谎,和风度。心理状态:美国和后苏联对当代心理学问题的观点,93–105。

恩德勒,J. A. (1977 年)。地理变异、物种形成和梯度(№10)。普林斯顿大学出版社。

皮埃尔-吕克和亚伦(2013 年)。表征学习的挑战:面部表情识别挑战。2020 年 4 月 23 日检索,来自https://www . ka ggle . com/c/challenges-in-re presentation-learning-face-expression-recognition-challenge/overview

Raz,g .,Winetraub,y .,Jacob,y .,Kinreich,s .,Maron-Katz,a .,Shaham,g .,… & Hendler,T. (2012 年)。描绘情绪的展开:探索神经网络动力学的多层方法。神经图像,60(2),1448–1461。

萨卡。(2018 年 11 月 17 日)。在深度学习中用真实世界的应用转移学习的综合实践指南。2020 年 4 月 23 日检索,来自https://towards data science . com/a-comprehensive-hands-on-guide-transfer-learning-with-real-world-applications-in-deep-learning-212 BF3 B2 f27a

【http://github.com】最初发表于https://gist.github.com/edbb98aa426d2c74574ae97f6ac706b4

德国暴雨事件的频率和强度在增加吗?

原文:https://towardsdatascience.com/are-heavy-rainfall-events-increasing-in-frequency-in-germany-2129b5d9d448?source=collection_archive---------19-----------------------

使用数据科学的调查

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

英格·玛利亚在 Unsplash 上拍摄的照片

2021 年7 月 14 日,北莱茵-威斯特法伦州和莱茵兰-普法尔茨州部分地区一天内降水量超过 100 升/米。后果是 100 多人在洪水中丧生,物质损失达数十亿欧元。

在和一个朋友谈论这件事时,他分享了他的印象,近年来暴雨事件有所增加。我不知道是同意还是不同意。他说的对吗?在德国,这种情况越来越多?它们的强度趋势如何?是不是有些城市的地理位置很不幸,比一般的事件发生得更频繁?

气候变化导致气温上升是一个普遍公认的观察结果,但暴雨事件的趋势在德国新闻媒体中一直是一个不太常见的话题。跟随我踏上旅程,寻找上述问题的答案。我们将从德国 1084 个气象站收集 1900 年至 2020 年的数据。结果是一个包含超过 1650 万次天气观测的数据集。让我们揭开它的秘密。

**我们的数据来自哪里?**德国气象局(Deutscher Wetterdienst)负责收集和归档德国的气象数据。大多数数据都是公开的,可以通过气候数据中心门户访问。我下载了德国所有可用气象站的历史降水数据,删除了缺失的数据,并过滤了 1900 年至 2020 年期间的数据集。

从我们的分析开始,我们可以标绘所有气象站的位置,以检查是否覆盖了每个地区。

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

数据基础:德国 Wetterdienst

1084 个气象站分布在德国各地。每个州在数据集中至少有几个气象站。然而,德国西南部的气象站比东北部多,这是一个轻微的梯度。

我们来看看数据是什么时候记录的。

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

数据基础:德国 Wetterdienst ,对单个值进行汇总

二战结束后的几年里,德国的气象观测出现了明显的繁荣。观察中的这种差异值得注意,这意味着在未来的时间序列分析中,我们必须根据每年的观察次数来调整暴雨事件的计数。

当处理数据集时,验证数据的可信度总是一个很好的做法。一种方法是用已知事件从外部验证数据集。对于这个项目,我们可以看看 2002 年 8 月易北河/多瑙河的洪水。如果数据集是准确的,它应该显示 2002 年 8 月 11 日德国东南部的大量降水导致易北河和多瑙河越过他们的海岸。

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

数据依据:德意志联邦共和国

清晰可见的是许多气象站报告高降雨量。因此,数据集的维度时间、位置和降雨量已经证明了它们的可信度。

一次足够验证,让我们深入分析部分:**德国暴雨事件是否越来越频繁?**要回答这个问题,我们首先要了解什么是暴雨事件。这个定义自然因气候区而异。如果你住在巴西雨林,德国的大雨可能会被认为是平常的一天。

德国气象局称极端事件为,如果:

  • 一小时内降雨量超过每立方米 40 升
  • 六小时内降雨量超过每立方米 60 升

由于历史天气观测只在每日汇总中可用,我不能坚持德国气象局的准确定义。对定义稍作调整,并接受微小的不准确性,我将随后谈论如果降雨量超过每天每立方米 60 升的暴雨事件。

也就是说,这是每年暴雨事件总量的图表——根据相应年份的观测总量进行调整。

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

数据基础:德国 Wetterdienst ,单个值的平均值

这是你所期望的吗?当我第一次看到这个图表时,我很惊讶,因为我暗暗期望看到一个明显的增长。但是我们来详细看一下。

可见的是多年来的高方差,突出了暴雨事件的不可预测性。极端峰值每几十年出现一次,标志着十年或百年一遇的暴雨。然而,25 年移动平均曲线显示,在过去 100 年中,暴雨事件的平均数量没有显著变化。

我们已经看到,到目前为止,德国暴雨事件的平均数量没有增加,现在让我们来看看暴雨强度是否也是如此。

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

数据基础:德国 Wetterdienst ,单个值的平均值

关于暴雨事件的强度,年变化再次很大。在过去的 100 年里,平均事件的平均降水强度保持不变,约为每立方米 73 升。应谨慎对待 1950 年之前记录的数据,因为观察次数少得多,这解释了数值的极端分散性。

与 1950 年至 1990 年期间相比,2000 年至 2020 年期间出现的峰值更高、更频繁,这表明近年来发生的暴雨事件更加极端。未来必须等待,看看这种观察是否会继续,均值是否会向上修正。

下一次有人问你暴雨事件的数量或强度是否在增加,你现在可以说虽然数量到目前为止似乎没有增加,但其强度在过去 20 年中已经上升了几次。

但是,请注意,所有的统计数据都是根据最佳知识和信念计算的,但不能保证它们的准确性。你也应该经常检查气候研究人员的工作,他们可以使用复杂的模拟工具和可能更多的数据,这些数据可能会也可能不会让他们得出不同的结论。但更多的是在讨论部分。

**现在,你可能会问,地区差异呢?**事件在德国是均匀分布的,还是有几个州更容易受到这些现象的影响?让我们找出答案。

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

数据基础:德国 Wetterdienst ,单个值的平均值

暴雨事件最有可能发生在巴伐利亚、巴登-符腾堡、萨克森和萨克森-安哈尔特。请注意,我计算了一个加权计数,它独立于每个州运营的气象站的数量。让我们再放大一点。这次是气象站的级别。

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

数据基础:德国 Wetterdienst ,单个值的平均值

巴伐利亚南部边境和巴登-符腾堡州的暴雨事件数量明显高于平均水平。对此一个可能的解释是这些气象站靠近山脉——阿尔卑斯山和黑森林。除此之外,德国各地似乎只有微小的差异。

总结词和结果讨论

这篇博文调查了过去 120 年德国暴雨事件的发生和强度趋势。数据来自德国气象局。尽管每年的事件变化很大,但迄今为止,德国的暴雨事件没有显著增加。虽然平均强度在过去 100 年中也保持不变,但在本世纪的几年中出现了峰值,这一趋势是否会持续还有待观察。

从物理学的角度来看,温度升高 1 度的气团可以多容纳 7%的湿度。这就是为什么科学家们长期以来认为全球变暖也可能影响极端天气事件的原因之一。

来自美国英国乌拉圭的研究支持这一论点,并强调了人为全球变暖对各自分析区域极端降雨事件的可能影响。然而,来自德国的两项研究没有发现人为气候变化对暴雨事件的明确影响,这表明这些事件中的自然变化可能仍然在今天的德国发挥着更大的作用。

然而,在过去的 20 年里,德国的暴雨事件 后果增加了吗?渐进的土壤密封意味着更少的水可以被地面吸收,这加剧了受影响地区的洪水。****

如果你想更深入地探讨这个话题,这里的是另一个很酷的地图,让你探索 405 项关于气候变化对极端天气影响的不同研究的结果。

如果你对这个项目的代码感兴趣,你可以在我的 Github 上查看。

鸣谢

如果没有德国气象局(Deutscher Wetterdienst)免费提供的数据,这个项目是不可能完成的。

知识图谱是 AI 的下一件大事吗?

原文:https://towardsdatascience.com/are-knowledge-graphs-ais-next-big-thing-1ea97bb394bd?source=collection_archive---------6-----------------------

播客

Mike Tung 谈搜索的问题和知识表示的未来

苹果 | 谷歌 | SPOTIFY | 其他

编者按:TDS 播客由 Jeremie Harris 主持,他是数据科学导师初创公司 SharpestMinds 的联合创始人。每周,Jeremie 都会与该领域前沿的研究人员和商业领袖聊天,以解开围绕数据科学、机器学习和人工智能的最紧迫问题。

尽管令人印象深刻,但像 GPT-3 和伯特这样的语言模型都有同样的问题:它们在大量互联网数据上接受训练,以模仿人类写作。人类的写作经常是错误的,有偏见的,或者两者兼而有之,这意味着语言模型试图模仿一个不完美的目标。

语言模型经常胡言乱语,或者对他们不理解的问题编造答案。这会让他们成为不可靠的真相来源。这就是为什么人们对从大型数据集中检索信息的替代方法越来越感兴趣——包括知识图的方法。

知识图将人、地点和对象等实体编码成节点,然后这些节点通过边连接到其他实体,这些边指定了两者之间关系的性质。例如,知识图可能包含马克·扎克伯格的节点,通过指示扎克是脸书首席执行官的边链接到脸书的另一个节点。这两个节点可能依次连接到几十个,甚至几千个其他节点,这取决于图形的规模。

知识图是人工智能能力的一条令人兴奋的道路,世界上最大的知识图是由一家名为 Diffbot 的公司训练的,该公司的首席执行官 Mike Tung 在本期播客中与我一起讨论知识图可以在哪些方面改进更标准的技术,以及为什么它们可能是人工智能未来的重要组成部分。

以下是我在对话中最喜欢的一些观点:

  • Diffbot 在整个互联网上训练其知识图,他们是少数几家(与微软和谷歌一起)抓取整个网络的公司之一。这是一个比看起来更大的壮举:不仅网络由数百亿个页面组成,而且这些页面中有许多包含必须避免的网络爬行机器人的陷阱。例如,一个网页抓取机器人登陆一个带有日历的网站时,可能会选择“显示下个月”选项,因为它会搜索更多的数据——但在这个过程中,它可能会陷入永无止境的循环,因为它永远不会扫描完几个月。精心设计的机器人不会因为这些问题而失败,Mike 认为这是 Diffbot 的关键优势之一。
  • Diffbot(以及一般的知识图)对用户的查询给出了明确的答案,而不是读者可以通过查阅资源列表来找到他们想要的答案。因此,它提供了一种不同于搜索的服务,一种更加固执己见的服务。这是一把双刃剑:一方面,它意味着最终用户更少的模糊性,但另一方面,错误变得更有影响力。Diffbot 不是向用户提供与他们的查询最相关的 10 个网页的列表,而是向他们提供一个单一的数字、名称或信息片段,这些信息可以明确无误地正确或错误。这就是传达不确定性如此重要的原因:Diffbot 已经开发了复杂的技术来评估其对用户查询响应的信心水平。
  • 知识图的优点之一是它们的响应是内在可解释的(不像深度学习系统那样像黑盒一样操作),它们的逻辑结构是显而易见的。这使得它们更容易被审问,也更有可能遵守关于人工智能使用的越来越严格的法规。
  • Mike 看到了知识图用于知识生成而不仅仅是查询的潜力。他指出,大多数知识工作都是孤立的,过于专业化,导致研究人员和技术人员错过了不同领域概念之间有价值的联系。他认为知识图表可能提供一种方法来识别通常不会存在于任何一个人头脑中的不同想法之间的有希望的联系:尽管医生和工程师必须相遇才能意识到他们两人可以设计出一种有价值的新医疗设备,但一个大的图表可以在一个结构中包括他们的知识和许多其他人的知识。这可能为发现概念之间的新联系和开发新的解决方案创造机会。

你可以在推特上关注迈克,或者我在这里

本集引用的链接:

  • 知识图谱调查论文:https://arxiv.org/pdf/2003.02320.pdf
  • 斯坦福知识图课程,cs 520:【https://web.stanford.edu/class/cs520/2020/
  • 知识图谱大会(行业应用):【https://www.knowledgegraph.tech/

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

章节:

  • 0:00 介绍
  • 1:30 diff bot 动态
  • 3:40 知识图表
  • 7:50 爬网
  • 17:15 这次有什么特别的?
  • 24:40 与神经网络的关系
  • 29:30 故障模式
  • 33:40 竞争意识
  • 39:00 用于发现的知识图表
  • 45:00 共识发现真相
  • 48:15 总结

我的(生物)药物分析性能可靠吗?只有成功的可能性才算数!

原文:https://towardsdatascience.com/are-my-bio-pharmaceutical-assay-performances-reliable-only-probability-of-success-counts-9f85f27cb208?source=collection_archive---------34-----------------------

行业笔记

制药行业传统量具 R 指标的替代品& R 指标

作者:Thomas de March in(pharm Alex 统计和数据科学高级经理)、Laurent Natalis(pharm Alex 统计和数据科学副总监)、Tatsiana Khamiakova(让桑制造和应用统计副总监)、Eric Rozet(pharm Alex 统计和数据科学总监)和 Hans Coppenolle(让桑制造和应用统计总监)。本文最初在 NCB 2021 会议上发表。

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

瓦尔德马·勃兰特在取消拍摄时拍摄的照片

源代码

本文的内容已经使用 r 自动生成。用于模拟和分析数据的源代码可从 Github 上的获得:https://github.com/tdemarchin/GageRRPharma

介绍

行业中经常进行 R&R 研究,以确定测量系统的运行性能,并确定其是否能够监控制造过程。一些指标通常与量具 R&R 研究相关,例如精度公差比(P/T)、精度总变差比(%RR)、信噪比(SNR)、%再现性和%重复性。虽然这些指标可能很适合整个行业,但一旦应用于药物制造行业,它们可能会出现问题,原因有几个:(1)(生物)药物分析通常比普通物理化学测量系统更具可变性,并且通常的标准对制药行业来说过于严格,(2)分析方法一旦通过鉴定,就无法始终得到改进,以及(3)测量通常成本高昂且耗时,这使得难以获得足够的数据来高精度地估计所有差异来源。

所有上述困难通常导致对测量系统的指责并触发警报,而测量质量对于其预期目的来说可能是可接受的。此外,通常很难弄清楚如何解释最常用的盖奇 R&R 指标,这些指标缺乏强有力的数学原理[1],因为它们通常不考虑估计的不确定性。

这项工作的目的是提出一种适用于药品生产的替代方法,以调查测量系统是否符合其预期目的。我们的方法侧重于理解测量系统的属性,旨在回答唯一相关的问题:(1)我的测量系统是否能够区分好的和坏的批次?(2)考虑到盖奇 R&R 实验中调查的工艺和测量可变性,未来的批次是否符合质量标准?

数据

量具 R & R 数据

在典型的盖奇 R&R 环境中,不同的分析员在不同的日子使用不同的设备,在某些情况下,在不同的实验室对几个批次进行重复测量。模拟了 Gage R&R 数据:

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

图 1:作为实验室、日期、分析员、设备和批次的函数的可变性图表。这三种颜色指的是三个不同的批次。

CPV 数据

虽然 Gage R&R 数据通常用于提供整个行业中测量系统和工艺可变性的信息,但在制药领域,工艺可变性无法从该数据中正确估计。事实上,通常只测量有限数量的批次(3-5)。此外,通常选择极端批次来跨越规格范围,因此不代表工艺有效批次与浴之间的可变性。

另一方面,过程可变性可以从其他来源估计,如持续过程验证(CPV)。在 CPV,对每批产品的 CQA 进行测量,并随时监控,以验证过程是否处于受控状态。模拟了一个典型的 CPV 数据集,并用其规格([90–110%])绘制了图表:

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

图 2:生产批次的测量值。红色水平线:规格。绿色虚线:控制限值(平均值 3SD)。

结果

根据盖奇 R&R 数据集,可以估计测量系统的可变性并计算不同的指标。使用贝叶斯框架和 R 包 brms 将以下模型拟合到 Gage R&R 数据中:

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

使用贝叶斯方法的主要优势在于:( 1)考虑了与模型和参数值相关的不确定性;( 2)具有预测性,便于通过模拟来模拟未来的测量值;( 3)可以整合相关的先验概率,这在可用数据有限时非常有用。

以下指标可从量具 R&R 数据集计算得出:

a)各成分的相对贡献(方差成分分析)

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

b)单次和多次实验室精度(测量不确定度)。X Y 的结果意味着未来的测量值有 95%的可能是真实值 X 附近的 Y。

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

c)作为批次真值的函数,成功符合规格的概率。该图有助于确定“安全区域”,在给定测量误差的情况下,真实批次值应位于该区域,以确保满足规格的高概率。

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

图 3:作为批次真值的函数,符合规格的成功概率。垂直红色虚线:规格。

虽然这些指标对于评估测量系统很有用,但它并没有包含实际的过程可变性,而是让评估者决定过程可变性是否足够小,可以在“安全区域”内操作。是否有可能结合测量和工艺可变性来确定未来的批次是否符合质量标准?

为了回答这个问题,我们可以利用 CPV 数据来确定过程的可变性。CPV 数据通常只包含每批一次测量,因此很难区分过程和测量可变性。

为了区分这两种情况,我们使用了根据 R&R 拟合计算的测量误差先验。这个先验是利用盖奇 R&R 拟合的所有随机效应确定的,除了实验室间的随机效应,因为 CPV 数据只来自一个实验室。使用贝叶斯框架和 R 包 stan 对 CPV 数据拟合了以下模型:

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

由此,使用(1)CPV 模型的批间方差和批截距后验分布,以及(2)盖奇 R&R 模型的批间方差、残差方差和实验室效应后验分布,对不同实验室的结果进行预测

下图显示了不同实验室中未来测量批次的后验预测分布。我们看到,除了实验室 E 的测量值高于其他实验室之外,大多数实验室都可能产生符合规格的测量值。然后,我们可以计算在规范范围内成功的概率。实验室。A = 0.98 实验室。B = 0.98 实验室。C = 0.99 实验室。D = 0.98 实验室。E=0.93。这允许确定哪些实验室能够以良好的成功概率进行测量,并潜在地调查有问题的实验室。

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

图 4:作为测量实验室功能的未来测量的后验预测分布。垂直红色虚线:规格。

结论

我们使用贝叶斯框架将测量系统属性的知识与过程可变性的知识结合起来。与传统的盖奇 R&R 指标相比,这里提出的指标有助于解释结果。这个例子显示了使用贝叶斯框架来确定测量系统和过程是否有能力的优势和灵活性。

参考

  1. 唐纳德·惠勒,《一项诚实的 R&R 研究》稿 189 (2009)。
  2. https://www.r-bloggers.com/

插槽和实体是一样的吗?

原文:https://towardsdatascience.com/are-slots-and-entities-the-same-f98a38ac328d?source=collection_archive---------12-----------------------

用 Rasa 构建聊天机器人—第二部分

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

作者图片

在过去的几个月里,我一直在使用 Rasa,最初我对插槽和实体之间的区别感到非常困惑。

在本帖中,我们将讨论插槽和实体是如何相似的,更重要的是,它们是如何不同的。

**Table of Contents**
- Defining Entities and Slots
- Are slots and entities interchangeable?
- When to use one over the other
- Setting Slots
- Extracting Entities

快速注释

这是我关于 Rasa 系列的下一篇文章。你可以看看下面之前的帖子。

在那里,我们讨论了 Rasa 和聊天机器人的一些基本组成部分,如果你是 Rasa 的新手,先浏览一下这篇文章会有所帮助。

定义实体和插槽

快速复习:这就是你如何定义这些术语。

时间

插槽是机器人的记忆。在任何需要持久保存值的地方,都可以使用槽。

在定义和使用插槽时,Rasa 为您提供了很大的灵活性。你可以给他们一个类型——文本,布尔,甚至自定义类型——你也可以选择一个槽是否应该影响对话的进行。

实体

实体是机器人从用户消息中提取的关键信息,比如用户的联系信息。

提取本身是由聊天机器人的 NLU 部分使用实体提取器完成的。

乍一看,它们似乎非常相似——都存储信息,尽管一个存储的时间更长,更重要的是,它们似乎可以互换。

插槽和实体可以互换吗?

他们不是。他们有联系,但只是在一定程度上。

类似

  • 两者都存储信息
  • 两者都会影响谈话的流程

差异

  • 实体更抽象,由称为实体提取器的 NLU 组件提取。
  • 插槽不能直接通过“提取”来填充,只能通过已经提取的实体或自定义操作来填充。
  • 实体可以使用像角色、组、同义词和正则表达式这样的特性进行更复杂的结构化和分组,而槽则没有。
  • 插槽有类型,rasa 允许您在很大程度上配置它们。

何时使用一个而不是另一个

在设计你的机器人时,这是一个非常重要的问题。理论上,您可以将每个实体映射到一个插槽,并让所有内容都保存在您的跟踪器上。但这并不总是必要的。

请记住,只有当您希望信息持久化时,才需要插槽,比如用户名。否则,实体本身就足够了。

没有相应插槽的实体

实体通常可以具有与其相关联的槽,因为槽可以被认为是“更持久的”实体。但是请考虑这样的情况,您需要临时提取一些信息,这些信息对于机器人恰当地响应用户的查询至关重要。

一个简单的例子?以一个“计算器”机器人为例。用户提到简单的算术查询,机器人计算答案。

用户会说这样的话:

Could you add 1223239 and 190239?

所需的信息可以提取为实体:operand(两个操作数将落入其中)和operator(在本例中是“add”)。

由于这些信息只是暂时有用——也就是说,在下一个问题之前——将它们存储在插槽中并不是一个好主意,尽管如果您愿意的话也可以这样做。

没有对应实体的插槽

这是一个更容易想到的用例。如果你需要一个提示,槽不需要通过实体来填充。你也可以使用动作。

插槽可以像全局变量一样使用。你也许可以维护一个名为is_existing的槽来跟踪一个用户是否是现有用户。

在这里,拥有一个名为is_existing的对应实体也是没有意义的,因为这个信息不能由用户提供,因此也不能被提取——它必须通过数据库查询来验证。

设置插槽

创建插槽

插槽在slots键下定义,位于名为的文件中。Rasa 让我们以多种方式组织您的数据—对于较小的项目,您可以选择将所有内容转储到一个文件中,或者将所有内容分开保存。

定义的插槽如下所示:

slots:
  email:
    type: text
    initial_value: null
    auto_fill: true
    influence_conversation: true

您可以决定类型,设置默认值,确保任何相应的实体(与您的插槽同名)自动填充它,还可以决定它是否会影响您的对话。

插槽设置

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

可以通过两种方式设置位置——按作者排列图片

可以通过两种方式设置插槽:

  • 通过具有相同名称的实体(当设置了autofillstore_entities_as_slots时,默认情况下是这样)
  • 通过自定义操作。

通过实体

当实体和插槽具有相同的名称时,可以用相应的提取实体自动填充插槽。这可以借助两个默认为True的属性来完成。

  • auto_fill(每个插槽默认设置为真)。看起来像这样:
slots:
  email:
    type: text
    auto_fill: <true|false>
  • store_entities_as_slots(在您的文件中设置为配置参数)
config:
  store_entities_as_slots: false

通过自定义操作

也可以通过自定义操作来设置插槽。自定义动作在文件中被定义为一个类,带有一个name和一个run方法。它继承自 Rasa 的Action类。

通过返回列表中的SlotSet对象来设置插槽,如下所示:

return [SlotSet("my_slot", value), .. ]

请记住,定制动作可用于查询数据库、进行 API 调用以及使用dispatcher响应用户。

因此,检查用户是否已经注册了时事通讯的自定义操作可以这样实现:

动作action_check_if_existing_user执行以下操作:

  • email插槽读取用户的电子邮件
  • 将其传递给查询数据库的助手函数
  • 获取响应并设置is_existing布尔槽
class ActionCheckIfExistingUser(Action):
    def name(self):
        return "action_check_if_existing_user" def run(self, dispatcher, tracker, domain):
        email = tracker.get_slot('email') # some helper method that queries the database
        action_utils = ActionUtils()
        is_existing = action_utils.check_if_user_exists(email) if is_existing:
            dispatcher.utter_message(text="You're signed up.")
        else:
            dispatcher.utter_message(text="You aren't signed up.")

        **return [SlotSet("is_existing", is_existing)]**

提取实体

实体由 EntityExtractors 提取。这些是您在配置文件的管道中提到的组件。

有几个现有的,你可以在 Rasa 的文档中找到,你也可以随时设计定制的组件。

我们将在以后的文章中讨论实体提取的细节。

角色和组

这是去年发布的一个特性,让你在定义实体时有更多的灵活性。

角色

可以把role看作是给一个特定的实体添加更微妙的含义的一种方式。

假设你正在开发一个机器人来帮助用户以旧换新他们的移动设备。你有一个实体model,嗯,提取智能手机模型。

现在,旧设备和用户想要购买的设备从技术上来说都是智能手机型号,但区分它们对机器人来说很重要。

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

实体角色-按作者分类的图像

所以,我们可以给model实体添加一个role。您可以像这样添加训练数据:

My existing device is an [iphone 11]{"entity": "model", "role": "existing_device"} and I want to buy an [iphone 13]{"entity": "model", "role": "new_device"}.

群组让你个实体组合在一起,这样它们更有意义。假设您有两个实体— nameage,一个用户说:

My friend John is 20 while David is 25.

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

实体组-按作者分类的图像

这里,机器人需要识别两组姓名和年龄之间的分组。约翰的年龄一定与他的名字有关,大卫也是如此。这就是团队出现的原因。

你可以这样做:

My friend [John]{"entity": "name", "group": "1"} is [20]{"entity": "age", "group": "1"} while [David]{"entity": "name", "group": "2"} is [25]{"entity": "age", "group": "2"}

参考

Rasa 文档中页面的链接

该系列的其他部分(这是第二部分)

第一部分:用 Rasa 构建聊天机器人

第三部分:处理聊天机器人故障

第四部分:聊天机器人是如何理解的?

最后

我们在这篇文章中讨论了插槽和实体,特别讨论了它们是如何关联的,但是不能互换。这篇文章的目的是让人们更容易理解这些是什么,以及在哪些场景中使用哪些。

谈到 Rasa 能提供什么,这只是冰山一角。我将在这个系列中添加更多的部分。

希望有帮助!

更新

20.3.2022

添加该系列中其他文章的链接

数据科学面试的技术/编码带回家对双方都有用吗?

原文:https://towardsdatascience.com/are-technical-coding-takehomes-for-data-science-interviews-useful-for-both-parties-d195559fd750?source=collection_archive---------33-----------------------

办公时间

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

安托万·道特里Unsplash 上拍摄的照片

根据我的经验,技术总结通常发生在几轮面试之后,或者在与招聘经理的面试之后。每个公司的动机都不同,但如果没有按照公司的标准执行,这将是你进入下一轮面试的障碍。作为一名数据科学家,通常,外卖是建立一个模型或分析一些数据可视化,统计。您还需要根据您分析的数据和/或您建立的模型提供建议。它们与软件工程师的技术带回家的东西非常不同,因为它们更关注数据,而不是构建应用程序或解释软件基础。

这是一篇基于我个人经历的观点文章。这不是一项研究,我在其中进行回归分析,以推断技术带回家对公司或受访者的技术招聘过程有多有用。现在两边都有了;我能更好地理解这两种观点。在过去的五年里,我已经带了十几门技术课回家,在我招聘的时候,我自己也复习了十几门技术功课。

关于我们应该如何衡量和测试数据科学知识,没有黄金标准。从之前类似的标准测试中可以看出,标准化测试可能会偏向性别和收入。

然而,即使数据科学中没有标准化的测试,公司在为每个人创建编码/知识测试时也应该谨慎,这样结果才不会源于偏见。减轻这种情况的唯一方法是公开招聘各个级别的员工。

我确实认为,应该有一个相关的审查过程,对这些中级职位进行审查,以发现潜力和个人的工作能力;然而,没有必要像目前一些人那样紧张。那些紧张而冗长的面试技术作业可能会让双方都很头疼,最终可能会过滤掉一些好的候选人。

公司在设计技术面试/带回家方面的一些优势是:

  • 更好地理解某人编码能力的熟练程度。
  • 观察他们如何解决问题/寻求帮助或澄清。
  • 剔除冒名顶替者。(尽管我不喜欢大公司发布的广撒网的工作清单,因为事实表明,如果不符合所有条件,大多数女性都不会申请)。我主要指的是那些说他们使用了这个工具或者进行了分析的人,而当解释这个工具的时候,他们做得不够好,这一点我是见证人。

现在受访者的优势是:

  • 如果它是公司数据的合成样本,它会让您更好地理解您将要处理的数据以及其中的一些问题。
  • 炫耀你的知识和解决问题的能力。

然而,对于受访者来说,这些带回家的技术作业有很多缺点:

  • 它们是过分的任务。我记得一家初创公司要求我连接到他们的数据库,探索 2M 行的趋势系列数据,并创建一个考虑客户流失的业务案例研究。他们说只需要 4 个小时。我花了 20 多个小时…
  • 感觉有时候就是免费的无偿劳动。借用前面的例子。我问他们的数据科学家,他们研究的是什么类型的问题,他们说的正是这个技术作业。我的时间有限,但他们有很长一段时间来整理。
  • 它们让人精疲力尽。我记得当我面试的时候,我每隔几周就要做 1-2 次这样的事情,持续三个月,这让我精疲力尽。感觉我需要的时间是他们建议的 5 倍,因为我对数据进行了彻底的调查,转换了数据,进行了可视化,并建立了一个模型。我可以理解,如果没有其他方面的帮助,为人父母的人可能无法将所有的时间都投入到这些技术性工作中。

对公司的不利之处是:

  • 除了面试候选人之外,从你的团队中抽出时间来评估作业
  • 你不知道人们是否复制代码,也不明白它在做什么。我并不反对使用堆栈溢出来调试错误或使用文章来获得灵感,但我记得在我的数据科学职业生涯早期,我希望获得一份我还没有准备好的工作,调整我并不完全理解的代码。
  • 公司可能会雇佣相同类型的人。取决于你的面试范围有多广,你可能会和同一类型的候选人分手。我在一家著名的信用卡公司经历了一个漫长而臭名昭著的面试过程,在招聘人员、招聘经理、技术带回家之后,是一个 5 小时的全天剖析案例研究。这让我想到,他们雇佣的是什么类型的人,因为一个包含如此多障碍的过程就像过滤器,越来越多的过滤。

因此,减轻这种情况的建议是:

  • 如果你必须做编码练习。不要让人把代码送过来,而是让他们解释并和你一起完成他们的工作。这将一举两得。首先,它将为受访者提供一些关于所提供工作的反馈,这是面试过程中的一个巨大差距。正如我所说的,一些技术带回家的东西需要受访者付出很多努力,即使进入下一轮,也很少得到认可或建设性的反馈。我无法解释有多少次,我在技术带回家后没有进入面试程序,我会为此责备自己,而实际上他们可能因为不同的原因没有让我进入下一轮。由于法律原因,公司在发送电子邮件说明没有进一步推进你的申请时,不会给出反馈理由,但如果你让这个人浏览他们的代码并解释,我个人知道,我会更准确地判断我做得是好还是坏。第二,如果你让某人走一遍他们的技术带回家,你就节省了试图弄清楚他们在做什么或自己运行它的时间,面试时间将需要 30 分钟到最多一个小时,面试官将非常清楚他们是否愿意继续与候选人合作。
  • 不要布置技术作业,而是要求他们深入解释概念或流程。询问特定的问题。不是像“什么是线性回归”这样的问题,而是“解释你是如何建立上一个回归模型的,你的发现是什么,以及你如何验证它是一个适合你的数据的模型”。或者“讨论一个场景,您必须转换数据以适应您的模型,或者您如何审查适合您的数据的模型?”
  • 如果他们的 Github 上有可能的话,让他们带你浏览一些以前的代码。许多候选人都有 Github,并发表了他们在那里完成的一些工作。如果他们的回购是可消化的,这意味着他们很好地阅读了我,他们的代码得到了很好的评论,表明你对他们试图做的事情有很好的了解。

简而言之,带回家面试可能会很广泛,令人生畏,感觉就像一条单行道,几乎没有反馈。公司评级也很耗时。我和我的同事在我们公司招聘时实施的一个流程是一个小练习,应该只花我们自己指定的时间来尝试,并且在我们给候选人一个机会向我们介绍他们的代码之后。这非常有帮助,因为他们在我们面前运行它,所以我们节省了调试时间,我们衡量了他们的交流能力,我们可以对他们工作的代码提供直接的反馈。

我很想知道您为数据科学面试做技术作业的经历,以及这些经历是否会引起共鸣!我只是希望这个过程对双方来说都更愉快,更包容,是双向反馈,对某人的工作能力做出更公平的评判。

新的 M1 macbook 对数据科学有好处吗?让我们找出答案

原文:https://towardsdatascience.com/are-the-new-m1-macbooks-any-good-for-data-science-lets-find-out-e61a01e8cad1?source=collection_archive---------0-----------------------

与英特尔 Macbook Pro 在 Python、Numpy、Pandas 和 Scikit 方面的比较-了解

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

Unsplash 上由Tomástanislavsk拍摄的照片

新的无英特尔的 Macbooks 已经出现了一段时间。自然是忍不住了,决定买一个。接下来是 2019 年基于英特尔的 MBP 与新的编程和数据科学任务之间的比较。

如果我必须用一个词来描述新的 M1 芯片,我会是这个——惊人的。继续阅读更详细的描述。

撇开数据科学不谈,这个东西是革命性的。它的运行速度比我的 2019 年 MBP 快几倍,同时保持完全安静。我运行了多个 CPU 耗尽的任务,粉丝一次也没踢进来。当然,还有电池寿命。太不可思议了— 中度到重度使用 14 小时没有任何问题。

但是让我们把注意力集中在基准上。总共有五个:

  • CPU 和 GPU 基准测试
  • 性能测试—纯 Python
  • 性能测试—数字
  • 性能测试——熊猫
  • 性能测试-sci kit-Learn

重要注意事项

如果你正在阅读这篇文章,我想你正在考虑新的 Macbooks 是否值得用于数据科学。它们肯定不是“深度学习工作站”,但首先它们不会花费太多。

整篇文章中的所有比较都是在两个 Macbook Pros 之间进行的:

  • 2019 Macbook Pro(i5–8257 u @ 1.40 GHz/8gb lpddr 3/Iris Plus 645 1536 MB)——简称英特尔 MBP 13 英寸 2019
  • 2020 M1 Macbook Pro(M1 @ 3.19 GHz/8GB)——简称 M1 MBP 13 寸 2020

并非所有的库都兼容新的 M1 芯片。我配置 Numpy 和 TensorFlow 没有问题,但是 Pandas 和 Scikit-Learn 还不能本地运行——至少我还没有找到工作版本。

唯一可行的解决方案是通过 Anaconda 安装这两个组件。它仍然通过一个 Rosseta 2 模拟器运行,所以比 native 慢一点。

你将看到的测试在任何方面都不是“科学的”,无论是形式上还是形式上。他们只比较了上述机器之间不同的编程和数据科学任务的运行时。

CPU 和 GPU 基准测试

让我们先从基本的 CPU 和 GPU 基准测试开始。 Geekbench 5 用于测试,你可以在下面看到结果:

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

图 1 — Geekbench 对比(CPU 和 GPU)(图片由作者提供)

结果不言自明。M1 芯片在我的 2019 Mac 中拆除了英特尔芯片。该基准测试仅测量整体机器性能,与您稍后将看到的数据科学基准测试并不完全相关。

尽管如此,事情看起来很有希望。

性能测试—纯 Python

以下是在该基准测试中执行的任务列表:

  • 创建一个包含 100,000,000 个介于 100 和 999 之间的随机整数的列表l
  • l中的每一项平方
  • l中的每一项求平方根
  • 乘以相应的平方和平方根
  • 划分相应的平方和平方根
  • 对相应的平方和平方根执行整数除法

测试只使用内置的 Python 库,所以不允许使用 Numpy。您可以在下一节看到 Numpy 基准。

下面是测试的代码片段:

结果如下:

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

图 2 — Python 速度测试—越低越好(图片由作者提供)

可以看到,在 M1 Mac 上通过 Anaconda(和 Rosseta 2 模拟器)运行 Python 减少了 196 秒的运行时间。最好原生运行 Python,因为这进一步减少了 43 秒的运行时间。

总结一下——Python 在新的 M1 芯片上本地运行时,速度大约是的三倍,至少在基准测试中是如此。

性能测试—数字

以下是在该基准测试中执行的任务列表:

  • 矩阵乘法
  • 矢乘法
  • 奇异值分解
  • 乔莱斯基分解
  • 特征分解

最初的基准脚本取自 Github 上的 Markus Beuckelmann ,并稍作修改,因此开始和结束时间都被捕获。脚本看起来是这样的:

结果如下:

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

图 3 — Numpy 速度测试—越低越好(图片由作者提供)

至少可以说,用 Numpy 得到的结果有点奇怪。由于某种原因,Numpy 在我的 2019 英特尔 Mac 上运行得更快了。也许是由于一些优化,但我不能肯定地说。如果你知道原因,请在评论区分享。

接下来,让我们比较熊猫的表现。

性能测试——熊猫

熊猫基准测试与 Python 基准测试非常相似。执行了相同的操作,但结果被合并到一个数据框中。

以下是任务列表:

  • 创建空数据框
  • 给它分配一列(X)100,000,000 个介于 100 和 999 之间的随机整数
  • X广场的每一个项目
  • X中的每一项求平方根
  • 乘以相应的平方和平方根
  • 划分相应的平方和平方根
  • 对相应的平方和平方根执行整数除法

下面是测试的代码片段:

结果如下:

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

图片 4-熊猫速度测试-越低越好(图片由作者提供)

正如你所看到的,没有对“本土”熊猫的测量,因为我还没有安装它。尽管如此,M1 芯片上的熊猫完成基准测试的速度还是快了两倍。

性能测试-sci kit-Learn

和熊猫一样,我还没有设法安装 Scikit-Learn。您只会看到英特尔 MBP 公司和 M1 MBP 公司通过 Rosseta 2 仿真器进行的比较。

下面是基准测试中执行的任务列表:

  • 从网上获取数据集
  • 执行训练/测试分割
  • 声明一个决策树模型,找到最优超参数(2400 个组合+ 5 重交叉验证)
  • 用最佳参数拟合模型

这或多或少是一个标准的模型训练过程,不考虑测试多种算法、数据准备和特征工程。

下面是测试的代码片段:

结果如下:

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

图 5-sci kit-学习速度测试-越低越好(图片由作者提供)

结果传达了与熊猫相同的信息-2019 英特尔 i5 处理器需要两倍的时间来完成相同的任务。

结论

与基于英特尔的 2019 Mac 的比较可能与你无关。这很好——您有了基准测试脚本,因此可以在您的机器上运行测试。如果您这样做了,请告诉我—我渴望了解您的配置以及它的比较情况。

新的 M1 芯片是惊人的,最好的还在后面。毕竟这只是第一代。Macbooks 不是机器学习工作站,但你仍然得到了很好的回报。

TensorFlow 的深度学习基准测试将于下周推出,敬请关注。

喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。

https://medium.com/@radecicdario/membership

加入我的私人邮件列表,获取更多有用的见解。

了解更多信息

原载于 2021 年 1 月 23 日 https://betterdatascience.comhttps://betterdatascience.com/are-the-new-m1-macbooks-any-good-for-data-science-lets-find-out/

新的 M1 macbook 对深度学习有好处吗?让我们找出答案

原文:https://towardsdatascience.com/are-the-new-m1-macbooks-any-good-for-deep-learning-lets-find-out-b475ad70dec2?source=collection_archive---------3-----------------------

M1 Macs 与谷歌 Colab 的基本深度学习任务

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

照片由 veeterzy 发自 Pexels

新的苹果 M1 芯片背后有很多宣传。到目前为止,它被证明优于英特尔提供的任何产品。但是这对深度学习意味着什么呢?这就是你今天会发现的。

新的 M1 芯片不仅仅是一个 CPU。在 MacBook Pro 上,它由 8 核 CPU、8 核 GPU 和 16 核神经引擎等组成。处理器和 GPU 都远远优于上一代英特尔配置。

我已经展示了 M1 芯片对于常规数据科学任务的速度有多快,但是深度学习呢?

简而言之——是的,在这个部门有一些改进,但现在的 MAC 电脑比,比如说, Google Colab 更好吗?请记住,Colab 是一个完全免费的选项。

这篇文章的结构如下:

  • CPU 和 GPU 基准测试
  • 性能测试— MNIST
  • 性能测试——时尚 MNIST
  • 性能测试— CIFAR-10
  • 结论

重要注意事项

并非所有的数据科学图书馆都与新的 M1 芯片兼容。让 tensor flow(2.4 版)正常工作说起来容易做起来难。

你可以参考这个链接下载。tensor flow 及其依赖项的 whl 文件。这只适用于 macOS 11.0 及以上版本,请记住这一点。

你将看到的测试在任何方面都不是“科学的”,无论是形式上还是形式上。他们只比较每个时期的平均训练时间。

CPU 和 GPU 基准测试

让我们先从基本的 CPU 和 GPU 基准测试开始。比较是在采用 M1 芯片的新 MacBook Pro 和 2019 年的基本型号(英特尔)之间进行的。 Geekbench 5 用于测试,你可以在下面看到结果:

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

图 1 — Geekbench 5 结果(英特尔 MBP 公司对 M1 MBP 公司)(图片由作者提供)

结果不言自明。M1 芯片在我的 2019 Mac 中拆除了英特尔芯片。到目前为止,事情看起来很有希望。

性能测试— MNIST

MNIST 数据集有点像深度学习的“hello world”。它内置了 TensorFlow,使测试变得更加容易。

以下脚本为 MNIST 数据集上的十个时期训练了一个神经网络分类器。如果你用的是 M1 Mac,取消对mlcompute行的注释,因为这会让程序运行得更快一些:

上面的脚本是在 M1 MBP 和谷歌实验室(CPU 和 GPU)上执行的。您可以在下面看到运行时比较:

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

图 2-MNIST 模型平均训练时间(图片由作者提供)

对于一台新的 Mac 电脑来说,结果有些令人失望。Colab 在 CPU 和 GPU 运行时都超过了它。请记住,结果可能会有所不同,因为在 Colab 中没有运行时环境的保证。

性能测试——时尚 MNIST

该数据集非常类似于常规的 MNIST,但它包含衣服而不是手写数字。因此,您可以使用相同的神经网络架构进行训练:

如您所见,这里唯一改变的是用于加载数据集的函数。相同环境的运行时结果如下所示:

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

图 3——时尚 MNIST 模特平均训练次数(图片由作者提供)

我们再次得到类似的结果。这是意料之中的,因为这个数据集与 MNIST 非常相似。

但是,如果我们引入更复杂的数据集和神经网络架构,会发生什么呢?

性能测试— CIFAR-10

CIFAR-10 也属于“hello world”深度学习数据集的范畴。它包含了来自十个不同类别的 60K 张图片,比如飞机、鸟、猫、狗、船、卡车等等。

这些图像的大小为 32x32x3,这使得它们在某些情况下甚至对于人类来说也难以分类。下面的脚本通过使用三个卷积层来训练分类器模型:

让我们看看卷积层和更复杂的架构如何影响运行时:

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

图 4 — CIFAR-10 模型平均训练时间(图片由作者提供)

如您所见,Colab 中的 CPU 环境与 GPU 和 M1 环境相去甚远。Colab GPU 环境仍然比苹果的 M1 快 2 倍左右,类似于前两次测试。

结论

我喜欢新 M1 芯片的每一点和它带来的一切——更好的性能,没有过热,更长的电池寿命。不过,如果你对深度学习感兴趣,这是一款很难推荐的笔记本电脑。

当然,M1 比我的其他基于英特尔的 Mac 有大约 2 倍的改进,但这些仍然不是为深度学习而制造的机器。不要误会我的意思,你可以使用 MBP 完成任何基本的深度学习任务,但如果你每天都做深度学习,在相同的价格范围内会有更好的机器。

本文仅介绍了简单数据集上的深度学习。下一个项目将在更高要求的任务上比较 M1 芯片和 Colab 比如迁移学习。

感谢阅读。

喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。

https://medium.com/@radecicdario/membership

加入我的私人邮件列表,获取更多有用的见解。

了解更多信息

原载于 2021 年 1 月 25 日 https://betterdatascience.com**的

话题也是词语社区吗?

原文:https://towardsdatascience.com/are-topics-also-communities-of-words-9b390862ea64?source=collection_archive---------35-----------------------

利用图形分析中的社区检测进行主题分析

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

图片由来自皮克斯拜托尔斯滕·弗伦泽尔拍摄

[剧透警报]当丹妮莉丝·坦格利安被她的侄子兼情人琼恩·雪诺谋杀后, 《权力的游戏》 社区变得猿类

“我现在太难过了,简直要哭了。呃。F#%k(原文)”愤怒的推特粉丝

“……她整个赛季都感觉被背叛了,她死的时候也被背叛了……”——另一个愤怒的推特粉丝

好了,句号。我从没真正看过 GOT HBO 系列。

停下来集体喘息

是的,我只知道我写在最上面的句子的严重性,因为我有一个哥哥是一个狂热的观众,他总是用下面的话来修饰他的解释:

“你只要看看这个系列就行了,兄弟。就像,给它时间,熬过第一季,然后你就会上瘾。”

但我没看过这个节目,不代表它对我没有影响。我第一次知道这部剧的狂热追随者是在我看一个年轻的研究生米兰·雅诺索夫的演讲时,他用人物之间的关系创建了一个网络图,并用它来预测谁最有可能在下一集死去。引起我注意的是模型的准确性和图论的新颖应用。

不言而喻,文字有助于形成关系。不仅仅是人与人之间的关系,他们还会在一个句子、一段话、一页纸上形成彼此之间的关系。

有什么比网络图更好的方式来表达这些关系呢?Janosov 帮助将这一信息传达给了大量受欢迎的粉丝,并激励了其他人,因为他们从《哈利·波特与火焰杯》到《指环王》和《T21》,甚至从《漫威》到《宇宙》。

大量现有的链接单词和关系的项目都集中在单词中的人以及他们与其他人的关系上。文字本身呢?它们之间的关系可以从图形的角度有效地理解吗?在这里,我看到了在文档中查找主题的图算法的应用。让我们开始吧。

话题分析,单词-数据版聚类

在数据科学中,我们使用无监督算法来帮助我们找到数据的自然(数据驱动)分组。大概应用最多的聚类算法是 K-Means 。然而,当这些数据是单词时,像潜在狄利克雷分配( LDA )这样的其他算法更受欢迎。LDA 比 K-Means 更受欢迎,因为 LDA 将多个主题分配给单个文档,而 K-Means 针对互斥组进行优化(也称为硬聚类)。

这两种方法的缺点是,都要求用户为模型输入特定数量的聚类/主题,然后尝试在数据中“查找”。必须事先输入主题的数量可能是一个挑战,因为我们通常不知道分组的最佳数量应该是多少。

感觉我们被剥夺了描述中“无人监管”的部分?我也是😊

无论如何,图算法可能为更真实的无监督主题建模方法提供一个可能的答案。在剩下的部分中,我将演示如何使用 Louvain 社区检测算法创建主题模型,可视化网络,并提供一些未来方向的提示。

构建单词的网络图

网络图只是一系列通过边连接的节点。在页面上的单词的上下文中,我们可以根据它们在句子或段落中的共同提及来连接两个单词。例如,如果单词“apple”和“eat”同时出现在同一段落中,我们可以如下图所示:

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

作者图片

在这个简单的例子中,我们可以得出结论,给定的文本段落有一个关于吃苹果的主题。

让我们来看看如何使用 Python 创建一个单词网络。

为了实现第一个目标,我们需要确定数据的来源。对于这个例子,我使用了一些来自社会心理学课程学生的 Word 文档。希望我们的主题模型能帮助我们了解他们写的是什么。下面是我在这个例子中工作的环境:

Windows 10 操作系统

Python 3.6

我们需要的包是:

networkx==2.5nltk==3.5python_louvain==0.14pandas==0.25.0community==1.0.0b1scikit_learn==0.24.2

为了建立我们的单词网络,我假设每个段落可以代表一个单独的主题,因此单词关系是在段落级别建立的。让我们加载数据,只选择前 6 个段落,并清理数据:

注意,在上面的代码中,我导入了 get_docx_text。这是一个自定义程序,可以在这里找到。

一旦数据准备好了,我就对数据进行最后一次快速清理,只关注名词。大多数话题可能是关于名词的,但是看看动词和名词或者动词和名词的二元结构也是有用的。

大厦边缘列表

当将数据设计成图形工具和技术认可的格式时,我们需要边列表或邻接矩阵。在这个例子中,我从术语-频率-逆-文档-频率矩阵构建了一个边缘列表。结果边缘列表包含前 100 个单词的“目标”列、表示每个段落的“源”列和提供该文档(例如段落)的单词的 TFIDF 值的“计数”列。

建图

一旦我们创建了边列表,我们现在就可以用 Python 构建一个 graph 对象。在接下来的两个函数中,我们传递一个包含“目标”、“源”和“权重”(我们称权重为“计数”)列的数据帧,以便构建图表。

df_to_graph 函数将返回两种图形类型中的一种,即一部分图形或二部分图形。不要太专业,我们在这个例子中的图是二分的。它是由两部分组成的,因为单词与段落相关,我们没有将这些单词直接相互关联(尽管我们可以)。但是我们最终确实想要将单词彼此联系起来,所以我们利用我们的图的二分性质,创建单词关系的一分投影。

概念如下:如果一个单词和另一个单词出现在同一个段落中,那么我们就把它们连接起来。连接两个单词的权重是它们的 tfidf 值之和(my_weight 函数)。

最后一行代码用 Python 生成了社区解决方案。

可视化图形

用 Python 生成社区检测解决方案远不如可视化和导航网络有趣。所以,我现在转向 Gephi 。要将 Networkx graph 对象保存为 Gephi 可读的格式,请使用以下代码:

nx.write_gexf(G, “path/to/save/your/graph.gexf”)

快速格式化后,这是我们的图表:

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

作者图片

有点乱吧?为了增加更多的可解释性,我根据权重过滤掉一些边,并在图上运行一些统计数据,包括在过滤后的图上进行 Louvain 社区检测。一旦完成,这些额外的统计数据就可以作为添加颜色、调整节点大小和调整这些节点上的标签大小的选择。

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

作者图片

这是由此产生的两个社区解决方案:

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

作者图片

我们学到了什么?

根据社区检测模型发现的两个主题,我们了解到学生们写的是暴力和脱敏。

很酷,对吧?但是我们能从这里去哪里呢?

展望未来

在本文中,我们演示了一个简单的实现,它使用图算法根据段落中的单词关系来识别主题。虽然它很酷,但仍然有一些明显的局限性。一个限制是结果有点像 K-Means 结果,因为单词被“硬聚类”成一个且只有一个聚类。也就是说,我们可以清楚地看到,一个主题中的单词仍然与分配给其他主题的单词有边(关系)。

另一个限制是很难将一个段落分配给一个主题。解决这个问题的一种方法是根据单词及其权重建立一个分类模型,以便预测哪个段落覆盖哪个主题。显然这不像 sci-kit 的那样简单”。预测”界面,但这是一种可能的解决方案。

尽管有这些限制,图形仍然是建模数据的一种有用方法。除了节点之间的关系之外,图表还允许我们给节点和边分配属性,这可以使它们自身有助于更复杂的图表方法,这可能对理解单词关系有所暗示。实际上,这里的是一篇使用单词嵌入作为节点属性的论文,用图形来通知更复杂的主题建模方法。

我希望这篇文章能启发你更多地思考图形分析及其对数据科学问题的潜在价值。前进!

喜欢连接以了解更多关于数据科学的信息?加入我

变形金刚在图像识别方面比 CNN 强吗?

原文:https://towardsdatascience.com/are-transformers-better-than-cnns-at-image-recognition-ced60ccc7c8?source=collection_archive---------0-----------------------

了解视觉转换器:用于图像识别的转换器

论文链接—https://arxiv.org/pdf/2010.11929.pdf

如今在自然语言处理(NLP)任务中,变换器已经成为 goto 架构(如 BERT、GPT-3 等)。另一方面,变形金刚在计算机视觉任务中的使用仍然非常有限。对于计算机视觉应用(如 Xception、ResNet、EfficientNet、DenseNet、Inception 等),大多数研究人员直接使用卷积层,或者在卷积块的同时添加某些注意块。关于视觉变换器(ViT)的论文实现了一个纯变换器模型,不需要卷积块,对图像序列进行分类。该论文展示了 ViT 如何在各种图像识别数据集上获得比大多数最先进的 CNN 网络更好的结果,同时使用相当少的计算资源。

视觉变压器(ViT)

转换器是对数据序列(例如一组单词)进行操作的网络。这些单词集首先被标记化,然后被输入到转换器中。转换器增加了注意力(二次运算——计算每对标记化单词之间的成对内积)。字数越多,运算次数也越多)。

图像因此更难在变形金刚上训练。图像由像素组成,每个图像可以包含数千到数百万个像素。因此,在转换器中,每个像素将与图像中的每个其他像素进行成对操作。在一个大小为 500*500 像素的图像中,这是 5002,所以注意机制将花费(5002)^2 运算。即使使用多个 GPU,这也是一项艰巨的任务。因此,对于图像,研究人员大多使用某种形式的局部注意力(像素簇),而不是使用全局注意力。

ViT 的作者通过使用全局注意力来解决这个问题,但不是在整个图像上,而是在多个图像块上。因此,首先将一幅大图像分成多个小块(例如 16*16 像素)。这如图 1 所示。

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

图一。图像分成多个小块(来源:来自原始纸张的图像)

然后,这些图像块被展开成一系列图像,如图 2 所示。这些图像序列具有位置嵌入。

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

图二。展开成一系列图像的图像块(来源:来自原始文件的图像)

最初,变形金刚不知道哪个补丁应该放在哪里。因此,位置嵌入有助于转换器理解每个补丁应该放在哪里。在论文中,作者使用 1,2,3…n 的简单编号来指定补丁的位置,如图 3 所示。这些不仅仅是数字,而是可以学习的向量。也就是说,不直接使用数字 1,而是存在一个查找表,该查找表包含代表补片位置的每个数字的向量。因此,对于第一个补丁,从表中获取第一个向量,并与补丁一起放入转换器中。类似地,对于第二个面片,从表中获取第二个向量,并将其与第二个面片一起放入转换器中,依此类推。这如图 4 所示。

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

图 3。具有位置嵌入的补丁(来源:图片来自原始论文)

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

图 4。作为向量表示的位置嵌入(来源:图片由作者创建)

图像补丁是一个小图像(1616 像素)。这需要以某种方式输入,以便变压器能够理解。一种方法是将图像展开成 1616 = 256 维的向量。然而,论文作者使用了线性投影。这意味着只有一个矩阵,表示为“E”(嵌入)。取一个小块,首先展开成一个线性向量。然后,这个向量与嵌入矩阵 e 相乘。然后,最终结果与位置嵌入一起被馈送到变换器。

然后,所有的补片(线性投影)连同它们各自的位置嵌入被输入到一个变换编码器中。这个变压器是一个标准的变压器架构(你需要的只是注意力——纸)。

有一个额外的可学习嵌入,标记为位置 0,如图 5 所示。这种嵌入的输出用于最终对整个图像进行分类。

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

图 5。整个 ViT 架构,带有额外的可学习嵌入——用红色标记,最左边的嵌入(来源:图片来自原始论文)

结果

表 1 显示了 ViT 与最先进的 CNN 架构在不同数据集上的结果对比。ViT 在 JFT-300 数据集上进行了预训练。下面的结果表明,在所有数据集上,ViT 的性能都优于基于 ResNet 的体系结构和 EfficentNet-L2 体系结构(针对有噪声的学生权重进行预训练)。这两种模型都是当前最先进的 CNN 架构。表 1 中,ViT-H 指的是 ViT-Huge(32 层),ViT-L 指的是 ViT-Large(24 层)。ViT-H/L 后面的数字 14 和 16 表示从每个图像中创建的补丁大小(1414 或 1616)。

该表还显示,ViT 比其他两种 CNN 模型需要更少的计算资源。

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

表 1。在各种图像数据集上将 ViT 结果与其他 CNN 架构进行比较(来源:原始论文中的表格)

图 6 显示了变压器在对各种图像进行分类时所给予的关注。

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

图 6:从输出记号到输入空间的注意机制(来源:图片来自原纸)

结论

视觉变形金刚会在计算机视觉任务中取代 CNN 吗?

到目前为止,CNN 已经统治了计算机视觉任务。图像基于这样一种思想,即一个像素依赖于它的相邻像素,下一个像素依赖于它的紧邻像素(无论是颜色、亮度、对比度等等)。美国有线电视新闻网的工作就是基于这个想法,在一幅图像上使用过滤器来提取重要的特征和边缘。这有助于模型仅从图像中学习必要的重要特征,而不是图像的每个像素的细节。

但是,如果将整个图像数据输入到模型中,而不仅仅是过滤器可以提取的部分(或它认为重要的部分),则模型表现更好的机会更高。这正是视觉变形金刚内部正在发生的事情。这可能是为什么在这种情况下,视觉变形金刚比大多数 CNN 模型更好的一个原因。

但这是否意味着未来在计算机视觉任务中,变形金刚会取代 CNN 的?

答案是,不会这么快。就在几天前,EfficientNet V2 模型发布了,它的性能甚至比视觉变形金刚还要好。这只是意味着,随着更新、更好、更高效的模型在不久的将来不断推出,我们可以期待两种类型(CNN 和变形金刚)的新架构一决高下。

我们都是贝叶斯吗?我们的大脑是这样认为的

原文:https://towardsdatascience.com/are-we-all-bayesian-our-brains-think-so-555cedaffed9?source=collection_archive---------22-----------------------

递归神经网络,吉莫,史酷比,设计思维和多样性说明

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

贝氏思考世界,由妮可·霍尔茨提供

当把加纳和童(2020)和阿南塔斯瓦米(2021)最近的两篇文章放在一起考虑时,人们会认为我们都是贝叶斯主义者。

贝叶斯定理的核心是从过去(即先验)获得的知识是未来预测的先导。然而,我们的贝叶斯思维显然是不完美的。问问任何试图预测股票价格的人,或者我们的下一次鼻塞是真的还是又一次新冠肺炎的前兆。

我们在预测未来时经常出错。我们可能会根据我们经历的症状错误地评估疾病的原因。但是我们确实在学习,而且当我们权衡更多的证据时,我们通常会变得更好。这可能反映了贝叶斯定理的作用。

Ananthaswamy 描述了递归神经网络(RNNs)如何模拟大脑功能。在这个预测过程中使用先验信息暗示了 RNN 的贝叶斯根源,这也是我今天文章的主题。

作为“预测机器”的大脑

Ananthaswamy (2021)说,我们的大脑是“预测机器”,从我们的五官中吸收信息,以评估事情发生的原因。然后,当我们收到新的信息时,我们会更新这些预测。“通过预测性处理,”他说,“大脑利用其对世界的先验知识,对传入的感觉信息的原因做出推论或产生假设。这些假设——而不是感官输入本身——在我们的脑海中引发了感知。”大脑,看起来,是一个机器学习装置!

这意味着大脑不仅仅是把我们看到的、听到的、闻到的、尝到的或触摸到的东西储存在大脑的书架上,然后立即识别潜在的原因。在感知事物和解释它之间有一个中间的机器学习步骤,这个步骤的操作就像贝叶斯 RNN。计算神经科学家正在测试这一中间步骤假说,越来越多的证据表明,RNN 模拟了动物用来理解环境的生物过程。

RNN 是一个涉及多层神经元的深度学习过程。如果神经科学家的推理路线是正确的,那么在他们的深度学习模型中创建的数学神经元类似于现实生活中动物用来理解事物的神经细胞。因为人类也是动物,我们的思维过程可能和 rnn 一样产生预测。一旦更多的感官输入被收集和分析,这些预测中的错误要么永久存在,要么被纠正;这就是贝叶斯理论发挥作用的地方。

为了了解这可能是如何操作的,考虑一下 Anathaswamy 的论文中的“基于预测的感知”图像。该图显示了两股相互作用的神经元,一股反映感官输入,另一股反映 RNN 模型根据该输入做出的预测。一旦在一个链中进行了预测,它将被发送回另一个链中的输入层,因此它可以与新信息一起作为贝叶斯先验来生成更新的预测。

数学支持和逻辑流程

接受感知是贝叶斯的概念也需要接受它们是概率性的。Garner 和 Tong (2020)在一篇文章中提供了支持概率贝叶斯 RNNs 的数学。他们对贝叶斯神经网络的推导可以用来解释动物,也许还有人类的神经网络是如何随着来自我们感官的新信息不断更新产生感知的预测的。这给我们留下了以下总结,尽管仍然是假设性的,逻辑流程:

基于来自多种感觉的输入的感知由递归神经网络的生物版本产生。

Anathaswamy 审查的证据通过显示 RNNs 如何在动物大脑中工作为这一假设提供了支持。

在一篇无关的论文中,Garner 和 Tong 提供了数学证明递归 rnn 有贝叶斯根。

综合考虑,他们的工作可以被解释为提供了动物如何解释其环境的数学和生物学机制。这种机制是否是真正的因果关系仍在争论中。

逻辑流程的最后一点无可否认是另一个假设的延伸——我的观点是贝叶斯 RNN 也适用于人类。需要更多的研究来评估这一假设的有效性,但对我来说这似乎很有说服力。

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

Unsplash.com 上迈克·刘易斯的照片

贝叶斯网络的一些类比和其他证据

你看过从 1969 年到 70 年代中期的经典史酷比卡通片吗?今天 YouTube 上有更新的版本。当我们还是孩子的时候,我和我的朋友们看原版电影是我们周六早晨例行公事的一部分。每幅漫画都展示了弗雷迪、达芙妮、维尔玛、沙吉和他们的狗伙伴史酷比将如何合作,吸收和权衡越来越多的证据,解决一个又一个的谜团。(剧透预警,他们遇到的神秘恶灵从来不是真鬼!)自己去看看他们是如何不断更新他们的假设,以创造出对邪恶环境更真实、更准确的认知。确实是卡通的贝叶斯人!

另外两个类比来自于人类如何在现实生活中有效地合作以理解他们的环境并产生更好的洞察力的例子。一个被称为设计思维,另一个由更多样化的劳动力及其下游建模方法来说明。

Friis Dam 和 Siang (2020)提供了一个关于设计思想的很好的描述。引用他们的网站:

设计思维是一个迭代的过程,在这个过程中,我们试图理解用户,挑战假设,重新定义问题,试图找出替代的策略和解决方案,这些策略和解决方案在我们最初的理解水平下可能不会立即显现出来。同时,设计思维提供了一种基于解决方案的方法来解决问题。它是一种思考和工作的方式,也是实践方法的集合。

它们还提供了一个总结设计思维方法的步骤列表。再次引用,这些步骤包括努力:

与你的用户共情

定义—您的用户的需求、他们的问题和您的见解

创意——通过挑战假设和创造创新解决方案的想法

原型—开始创建解决方案

测试—解决方案

重要的是,作者指出了这个过程的迭代(有人可能会说贝叶斯 RNN)性质。为了给客户的问题找到最好的解决方案,我们鼓励参与者互相挑战,在不同的阶段之间来回转换。这将有助于巩固他们对需求、为满足这些需求必须克服的挑战、潜在解决方案以及实现这些解决方案的最佳方式的理解。迭代设计思维过程也将帮助他们预测提议的解决方案的可能结果。

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

史蒂文·拉斯里在 Unsplash.com 拍摄的照片

劳动力多样性的概念也是类似的。在机器学习或其他人工智能建模工作的背景下,多样性意味着拥有一个项目设计和分析团队,其成员反映了他们研究对象的环境和文化特征。这也意味着使用充分代表这些主题的数据来预测感兴趣的结果。多样性还意味着测试模型,以了解数据生成过程或结果是否会因年龄、性别表达、种族、民族、收入或其他与环境相关/重要的因素而有显著差异。像这样的敏感性分析是贝叶斯精神的证据,也是做出准确推断的关键。

确保多样性很难。我们的建模团队可能无法充分代表感兴趣的主题。可能无法获得专家或利益相关方的建议。我们可能缺乏数据,我们的预算和研究环境并不总是有利于使用最佳方法。然而,致力于多样性将确保各种各样的设计、方法和解释将被考虑。这将有助于我们在分析过程中不断迭代,从而获得更好的解决方案,避免我们的模型出现偏差(Obereyer 等人,2020;霍尔等人,2021 年)。

限制和最终想法

如果我们的大脑是数学和概率贝叶斯机器,为什么我们不能完美地解释我们的感官并对现实产生准确的感知?数学不是不可改变的吗?当只有一个人是正确的时候,为什么我的看法可能与你不同?答案是,我们的大脑数学很好,但它的感官输入受到我们独特的历史经历和我们所处环境的影响。这些会影响我们的先验知识,进而影响我们的感知。如果我们错误地解释了历史,或者如果我们的环境受到其他不准确因素的不当影响,我们的感知可能是错误的。

我们的贝叶斯思维机器的历史和环境依赖性也是我们的预测和感知具有内在不确定性的一个原因。我们的置信区间的大小是不同的,所以我可能会比你更有把握地正确或错误地解释一些事情。希望随着更多信息的到来,我们的确定性和准确性变得更好,我们的思维机器继续权衡证据,但不能保证这将导致完美的理解。如果随着时间的推移,我们总是能更好地描述现实,我们就不会背负如此荒谬的阴谋论。我们将能够更好地从虚构中找出真相,争议最终会平息。

相关的一点与记忆功能有关;这也可以从贝叶斯的角度来看。记忆是一种保留我们的先验的装置,然后影响后验概率的产生。但记忆的准确性因人而异,我们的记忆随着时间的推移以不同的速度退化(Yassa 等人,2011 年)。记忆也是上下文相关的。然而,Anathaswamy (2021)指出,记忆是 RNN 有效运作的关键,也可能是 rnn 有用的原因。如果我们想改善我们的大脑机器,努力改善我们的记忆将是一个很好的开始。

以科学为基础的感官解读方法也会提高我们感知的准确性,但那是另外一个故事了。

作为最后一个想法,支持贝叶斯 RNN 感知产生过程的证据仍然是间接的,但似乎贝叶斯定理几乎可以在我们看到的任何地方找到。因此,如果我们的目标是对我们的世界如何运作产生越来越现实的预测和准确的感知,那么在我们所有的数据科学项目中纳入至少一种贝叶斯方法可能是有用的。

参考文献:

A.Anathaswamy,你的大脑是一台节能预测机器(2021),在https://www . wired . com/story/Your-Brain-is-a-Energy-Efficient-Prediction-Machine/?bxid = 5b a08 b 63 f 92 a 4046944073 e&cn did = 37560534&esrc = AUTO _ OTHER&hashc = cc 9 CB 28 C4 DBD 883035113 D8 b 812 fa 1 ecdc 6 e 97567 C2 e C2 E0 b 3497 dcc0e 716535&mbid = mbid % 3 crmwir 012019% 0A % 0A【0A

R.什么是设计思维?为什么它如此受欢迎?(2020 年),在https://www . interaction-design . org/literature/article/what-is-design-thinking-and-why-it-so-popular

页(page 的缩写)神经网络中递归的贝叶斯方法(2020),arXiv:1910.11247v3 [cs .LG]2020 年 4 月 20 日。

页(page 的缩写)Hall,N. Gill 和 B. Cox,《负责任的机器学习》( 2021 年),波士顿,MA: O’Reilly Media 公司。

Z.Obermeyer,R. Nissan,M. Stern 等人,《算法偏差剧本》(2020 年),芝加哥布斯:应用人工智能中心。同样在https://www . FTC . gov/system/files/documents/public _ events/1582978/algorithm-bias-playbook . pdf

米(meter 的缩写))A. Yassa,A. T. Mattfeld,S. M. Stark 和 C. E. L. Stark,年龄相关的记忆缺陷与海马体中特定回路的中断有关(2011 年),PNAS 108(21):8873–8878,也在 https://doi.org/10.1073/pnas.1101567108

我们在宇宙中是孤独的吗?飞碟目击的数据分析和数据可视化

原文:https://towardsdatascience.com/are-we-alone-in-the-universe-data-analysis-and-data-visualization-of-ufo-sightings-with-r-42d0798679c3?source=collection_archive---------7-----------------------

如何分析和可视化美国和世界其他地方上个世纪的 UFO 目击数据

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

仪表板,以查看生成的关于不明飞行物目击的情节。文末的链接

人类可以问自己的一个问题是,我们在宇宙中是否是孤独的。我认为,假设我们是唯一一个拥有足够智慧去拜访宇宙中其他世界的文明,这将是荒谬和极其徒劳的。如果比我们更聪明的其他文明已经拜访过我们了呢?如果他们现在正在看着我们呢?如果天空中那些奇怪的未知景象与此有关呢?

“或者也许他们在这里,但是因为一些卡拉狄加的法律,一些不干涉新兴文明的道德准则而藏了起来。我们可以想象他们好奇而冷静地观察我们,就像我们观察琼脂培养皿中的细菌培养一样,以确定今年我们是否能够避免自我毁灭。”
——卡尔·萨根,

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

照片由阿尔伯特·安东尼Unsplash 拍摄

2020 年 4 月,五角大楼解密了美国海军录制的三段视频,确认了它们的真实性。在这些视频中,你可以看到不明飞行物飞过天空,无视我们所知道的物理定律。

平均每三个人中就有一个人目睹过天空中一些不寻常的现象,我们通常称之为“UFO 现象”。

数据准备

这是一个包含世界各地 UFO 目击数据的数据集。它包括了上个世纪向国家 UFO 报告中心(NUFORC)报告的超过 80,000 份 UFO 目击记录。该数据集在网上免费提供,数据可以从 Kaggle (通用公共许可证)下载

现在,您将加载将在分析过程中使用的库并读取数据。

# REQUIRED LIBRARIESlibrary(dplyr);
library(ggplot2);
library(mclust);
library(lubridate);
library(mapdata);
library(maps);# READ DATAdataUfo <- read.csv(file="data/scrubbed.csv", header=T);dataUfoClear <- dataUfo %>%
  dplyr::select(latitude, longitude, shape, country,
                datetime, date.posted, city, state,
                duration = duration..seconds.);

在原始数据集中可以找到以下字段:

日期时间——UFO 目击事件发生在这个日期和这个时间。
城市——不明飞行物目击的地点。
—该州以发现它的城市命名。
国家 —基于州,发现它的国家。
形状 —看到的 UFO 的形状。
持续时间(秒) —以秒为单位,照准的长度。
【分钟】 —以分钟为单位,照准的长度。
评论——看到不明飞行物的人做了如下评论。
发布日期 —当目击事件被报告给 NUFORC 时,这就是日期。
纬度 —照准的纬度。
经度 —照准的经度。

在对数据集进行第一次检查后,发现有些数据不完整,因为缺少一些列。此外,该集合中的一些数据不适合该目的。因此,我们稍微清理了一下数据,使其更易于分析。下面的代码演示了如何清理数据。

# DATA CLEANdataUfoClear$latitude <- as.numeric(as.character(dataUfoClear$latitude));
dataUfoClear$longitude <- as.numeric(as.character(dataUfoClear$longitude));
dataUfoClear$country <- as.factor(dataUfo$country);
dataUfoClear$datetime <- mdy_hm(dataUfoClear$datetime);
dataUfoClear$date.posted <- mdy(dataUfoClear$date.posted);
dataUfoClear$duration <- as.numeric(as.character(dataUfoClear$duration));# DATA USAdataUfoClear <- na.omit(dataUfoClear);
dataUfoUSA <- filter(dataUfoClear, country=="us" & !(state %in% c("ak", "hi", "pr")));head(dataUfo);
head(dataUfoClear)

数据字段**“注释”**出现在该数据集中。一个科学的文本分析会消耗整个研究,这就是为什么选择不考虑它而专注于其他数据。持续时间(分钟)功能也被取消了,因为它与持续时间(秒)相比是多余的。您将用于分析的更准确的数据集描述如下:

日期时间——UFO 目击事件发生在这个日期和这个时间。
城市——不明飞行物目击的地点。
—该州以发现它的城市命名。
国家 —基于州,发现它的国家。
形状——看到的 UFO 的形状。
持续时间——以秒为单位,照准的长度。
发布日期 —当目击事件被报告给 NUFORC 时,这就是日期。
纬度 —照准的纬度。
经度 —照准的经度。

可以看出,数据集包含一些有趣的数据。考虑到这一点,我想提出一系列问题,这些问题可以通过彻底的研究来解决,从而提取有用的信息并得出结论。

哪个国家目击 UFO 的次数最多?

根据数据集,要执行的第一个分析是确定在上个世纪地球上哪个国家出现的次数最多。

# COUNTRY MOST UFO SIGHTINGSlevels(dataUfoClear$country) <- c("Rest of the world", "Australia", "Canada", "Germany", "Great Britain", "United States");
ggplot(dataUfoClear, aes(x=reorder(country, country, FUN=length), fill=country)) +
  stat_count() + 
  theme_bw() + 
  scale_fill_brewer(palette="Dark2") +
  labs(x = "Country", y = "Number of sightings", 
     title="Most UFO sightings by Country", 
     subtitle = "United States and Rest of the world")

根据柱状图,美国在上个世纪是目击数量最多的国家。也许因为 NUFORC 是一个总部设在美国的组织,大多数美国人意识到他们可以报道他们所看到的。因此,您可以将这些数据的分析集中在美国。

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

UFO 目击事件的数据分析和数据可视化-按国家绘制大多数 UFO 目击事件

UFO 目击事件的全球密度是多少?

之前已经确定美国比其他任何国家都有更多的目击事件。但是首先,让我们画一张世界地图来检查在每个国家的目击事件有多密集,以及它们是否只出现在这个国家的一个地区或整个地区。

# HOW DENSE SIGHTINGS AROUND THE WORLDggplot(dataUfoClear, aes(x=longitude, y=latitude, colour=country)) + 
  borders("world", colour="gray", fill="seashell3") +
  geom_point(shape=15) +
  theme_bw() + 
  labs(x = "Longitude", y = "Latitude", 
       title="Map UFO sightings around the world", 
       subtitle = "United States and Rest of the world")

这张地图也支持了这样一种观点,即美国比其他任何国家都有更高的目击密度。你可以看看它们在各州的分布情况。

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

UFO 目击事件的数据分析和数据可视化——绘制全球 UFO 目击事件地图

UFO 目击事件在美国是如何分布的?

现在您已经确定了美国拥有最多和最密集的目击事件,您可以查看每个州的目击事件数量。

# SIGHTINGS IN UNITED STATESggplot(dataUfoUSA, aes(x=reorder(state, state, FUN=length), fill=state)) + 
  stat_count() +
  theme_bw() + 
  theme(axis.text.x = element_text(angle=45, size=9, hjust=1)) + 
  labs(x = "State", y = "Number of sightings", 
       title="UFO sightings in United States", 
       subtitle = "Sightings by state")

直方图显示,该州指定的“ca”,即加利福尼亚州,在上个世纪有最多的 UFO 目击事件。

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

UFO 目击事件的数据分析和数据可视化——美国 UFO 目击事件的绘图

你也可以在一张完整的美国地图上看到同样的结果。

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

UFO 目击的数据分析和数据可视化——美国 UFO 目击地图

出现的最典型的 UFO 形状有哪些?

你可以看看世界上存在的最普遍的形状,因为你已经按国家和州查看了 UFO 活动。

# MOST SHAPES THAT APPEARggplot(dataUfoClear, aes(x=reorder(shape, shape, FUN=length), fill=shape)) + 
  geom_bar(show.legend=F) +
  coord_flip() +
  theme_bw() + 
  labs(x = "Shape", y = "Number of sightings", 
       title="Most typical UFO shapes that appear", 
       subtitle = "UFO shapes seen around the world")

条形图显示,描述的最常见的形状是一个标记为“光”的普通形状,它经常被有这种经历的人解释为耀眼的光环。

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

UFO 目击的数据分析和数据可视化——绘制最典型的 UFO 形状

UFO 目击事件和时间有关联吗?

你可以看看目击的次数和一天中的时间是否有关联。此外,您可以用月份和年份进行测试。

# CORRELATION BETWEEN THE TIME AND SIGHTINGSggplot(dataUfoClear, aes(x=hour(datetime))) + 
  geom_histogram(bins=24, aes(fill=..count..)) +
  theme_bw() + 
  scale_fill_gradient(low = "palegreen", high = "palegreen4") +
  labs(x = "Hour of the day", y = "Number of sightings", 
       title="Correlation between daytime / UFO sightings", 
       subtitle = "Sightings during the day")

直方图清楚地表明,大多数的目击事件发生在没有光线或光线很弱的时候。然而,值得注意的是,白天也有不明飞行物的报道。

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

UFO 目击事件的数据分析和数据可视化——日间/ UFO 目击事件之间的关联图

不明飞行物的形状和时间有关联吗?

你可以看看形状和一天中的时间之间的关系。这可以解释为什么光的形状是最常被报道的形状。

# CORRELATION BETWEEN THE TIME AND UFO SHAPEshapesDaytime <- 
  dataUfoClear %>% 
  group_by(hour=hour(datetime), shape, duration) %>% 
  summarize(count=n());

ggplot(shapesDaytime, aes(x=hour, y=shape)) + 
  geom_point(aes(color=count, size=count)) + 
  scale_colour_gradient(low = "palegreen", high="palegreen4") +
  labs(x = "Hour of the day", y = "UFO Shape", 
       title="Correlation between daytime / UFO Shape", 
       subtitle = "Sightings during the day")

从图中可以看出,这些形状在夜间也更加普遍/持久。我们可以看到,与其他常见形状相比,光在夜间和傍晚出现的频率更高,但在白天出现的频率较低。

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

UFO 目击的数据分析和数据可视化——白天/ UFO 形状之间的绘图相关性

现在,您将进行“卡方”测试,看看一天中的时间和形状之间是否有联系。

假设:每个样本观察值都是独立的,进行卡方独立性检验。每个案例至少有一个条目。

chisq.test(dataUfoClear$shape, hour(dataUfoClear$datetime), simulate.p.value=T);

从这些数据中可以看出,p 值小于 0.05,即 p 0.05,这表明 UFO 的形状确实取决于一天中的时间。

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

UFO 观测的数据分析和数据可视化— RStudio 控制台卡方输出

随着时间的推移,UFO 目击的频率上升了吗?

你希望在静态时刻研究 UFO 遭遇后,分析整个时间的 UFO 遭遇。

# SIGHTINGS BY YEARsightingsYear <- 
  dataUfoClear %>% group_by(year=year(datetime)) %>% 
  summarize(count=n());# REPORTS BY YEARreportsYear <- 
  dataUfoClear %>% group_by(year=year(date.posted)) %>% 
  summarize(count=n());ggplot(sightingsYear, aes(x=year, y=count)) + 
  geom_line(size=1, colour="palegreen4") + 
  geom_line(data=reportsYear, aes(y=count), size=1, colour="red") + 
  geom_smooth(method="lm") +
  labs(x = "Year", y = "red = reports, green = sightings", 
       title="UFO sightings / UFO reports by year", 
       subtitle = "Sightings during the day")

不仅在美国,全世界报告和发现的病例数量也在增加。从线性回归图中可以看出,UFO 目击数量并不是线性增长的。

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

UFO 目击事件的数据分析和数据可视化—按年份绘制 UFO 目击事件/ UFO 报告

总之,你的发现表明,美国,即加利福尼亚州,有最高的目击数量。然而,要注意的重要一点是,根据人口密度,华盛顿州的目击密度高于加利福尼亚州。加利福尼亚州和华盛顿州都已经将娱乐用大麻合法化,这可以解释为什么在西海岸有这么多的目击事件。

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

布鲁斯·沃林顿在 Unsplash 上的照片

同样值得注意的是,这种被称为“光”的形状在每个国家都是有史以来最常被记录的,而且主要发生在晚上。随着时间的推移,目击和报告的数量似乎有所上升,但最近有所下降。我们不能根据这种分析来确定外星人是否存在,因为我们只有关于目击的信息。

这些 UFO 目击事件可能只是这些国家的技术测试吗?这些不明飞行物会不会是被派去评估先进国家力量的外星人的先进工具?只有时间和额外的数据会提供答案,但那是另一个数据分析实验的主题。

非常感谢您的善意阅读。和我的大部分文章一样,我在一个 flexdashboard 中分享了与一起产生的情节,我把它放在一起更有美感一点:https://rpubs.com/cosmoduende/ufo-sightings-usa-world

在这里你可以找到完整的代码:https://github.com/cosmoduende/r-ufo-sightings

感谢你坚持到最后,祝你分析非常愉快,可以把一切都付诸实践,对结果感到惊讶,和我一样开心!

我们准备好迎接全自动社会了吗?

原文:https://towardsdatascience.com/are-we-ready-for-a-fully-automated-society-f13a13fa2cb1?source=collection_archive---------14-----------------------

意见

分析使用人工智能取代人类工作的伦理含义和局限性

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

莱尼·屈尼在 Unsplash 上的照片

2005 年,著名的未来学家 Ray Kurzweil 描述了奇点——一个机器智能变得比所有人类智能加起来还要强大的时间点。与奇点密切相关的一个想法是用人工智能实现人类工作的自动化。

人类劳动的自动化是我们今天已经可以看到的现象。无收银员的商店和配备机器人服务器的餐馆只是自动化的两个例子。有些人甚至相信,在某一时刻,所有的工作都将由计算机程序自动完成。但真正的问题是,我们真的能用人工智能实现所有工作的自动化吗?即使我们可以自动化许多工作,这个世界真的为完全自动化做好准备了吗?

人工智能的现状

当考虑人工智能运行社会的可能性时,我们必须问的第一个问题是人工智能的当前状态和能力。人工智能有四种类型,可以被视为不同的复杂程度。

  1. 无功艾
  2. 有限的内存
  3. 心理理论
  4. 自我意识

前两种类型的人工智能已经存在于今天的世界,但最后两种类型是理论概念,不会成为现实,直到未来的某个时候。

活性人工智能

反应式人工智能没有记忆的概念,只是被设计来对某些输入做出反应并产生一个输出。反应式人工智能是最简单的人工智能形式,大多数早期的人工智能系统都属于这一类。

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

IBM 的深蓝,一台打败了加里·卡斯帕罗夫的象棋计算机,是反应式人工智能的一个例子。图片来源:科学美国人。

有限记忆人工智能

有限记忆人工智能能够从过去的经验中学习,并具有一定程度的记忆,允许它随着时间的推移提高性能。深度学习的许多进步,如使用 LSTMs 处理序列数据和强化学习的发展,已经使这种类型的人工智能成为现实。

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

自动驾驶汽车是有限记忆人工智能的一个例子。罗伯特·尼克森在 Unsplash 上的照片

心理理论人工智能

当机器有能力与人类的思想和感情互动时,我们将达到“心理理论”人工智能。心理理论是心理学中的一个概念,指的是通过将精神状态归因于他人来理解他人的能力。当机器拥有这种能力时,它们将拥有社交和情商,这使它们能够解决更广泛的问题。

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

照片由安迪·凯利Unsplash 上拍摄

自我意识人工智能

当 AI 使机器能够实现具有自我意识的智能时,具有自我意识的 AI 将成为现实。在这一点上,由具有自我意识的 AI 驱动的机器将是有意识的实体,这就提出了机器和人类如何共存的问题。

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

照片由 Arseny TogulevUnsplash 上拍摄

哪些工作可以轻松实现自动化?

涉及重复步骤或可预测决策的工作可以使用反应式人工智能实现自动化。这些工作通常涉及体力劳动或涉及遵循明确说明的任务。属于这一类别的工作包括:

  • 制造业和仓库工作。
  • 建筑中的体力劳动工作。
  • 商店店员和收银员的工作。
  • 废物管理工作。
  • 农业中的体力劳动工作(灌溉、收割等)。)

上面的列表绝不是详尽的,但这里的关键点是,所有这些工作都涉及到带有明确定义的指令或可预测决策的任务,即使有反应式人工智能,机器也可以遵循这些指令或决策。

哪些工作最终可以实现自动化?

涉及基于过去事件和不同情况的更复杂决策的工作最终可以自动化,但比涉及重复的算法任务的工作更难自动化。属于这一类工作的一个很好的例子是出租车司机的工作。

驾驶过程中肯定会涉及到决策模式,但驾驶员需要能够根据具体情况做出决策。例如,我们可以训练自动驾驶汽车在看到人脸时停下来。但是,车遇到一个脸被遮住的人怎么办?汽车遇到过马路的不是人而是狗怎么办?作为人类,我们可以根据以前的经验和我们所谓的“常识”本能地做出这些决定。

驱动自动驾驶汽车的人工智能模型需要经过训练,以便对各种各样的情况做出适当的反应,并保留一定程度的关于过去事件的记忆。一般来说,涉及更复杂、依赖于情景的决策的工作最终可以通过严格训练和测试的有限记忆人工智能来自动化。

目前哪些工作应该留给人类?

某些工作需要的智能超出了人工智能能够提供给机器的有限内存。需要社交和情商的工作可能不会很快被人工智能自动化。事实上,我认为这些工作现在应该留给人类去做。我下面列出的所有工作都需要一定程度的社交和情商,这超过了我们当前人工智能系统的极限。

心理健康专家

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

尼克·舒利亚欣在 Unsplash 上的照片

毫不奇怪,人工智能在目前的状态下,无法有效地自动化精神卫生专业人员的工作。治疗师、咨询师和心理学家需要能够理解他人的情绪和精神状态。在写这篇文章的时候,人工智能还不能理解人类的情感。有些人会认为,大型语言模型,如 GPT-3,能够进行类似人类的对话,但进行对话和真正理解另一个人的思想和感情是有区别的。

在我们实现心理理论人工智能之前,机器人治疗师或顾问的想法将是不可行的。事实上,我们可以放心,心理健康专家的工作将会长期存在。

医生和医务人员

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

照片由 Olga GuryanovaUnsplash 拍摄

尽管机器可能会通过使用复杂的计算机视觉模型来执行复杂的手术,如心脏移植,但在目前的状态下,医生和其他医疗专业人员的工作无法完全被人工智能取代。

医疗专业人员,尤其是那些在急诊室等高风险环境中工作的人员,需要了解生死情况的紧迫性。也有研究表明,同理心是成为一名医生的重要组成部分。简单治愈一种疾病和真正治疗一个病人是有区别的。治疗病人需要理解病人的顾虑,并把他们看作一个人,而不仅仅是一种疾病。由有限记忆人工智能驱动的机器可以胜任执行医疗程序,但总是无法在人类层面上与患者联系。

使用机器代替医生的工作也带来了伦理问题。例如,如果机器人外科医生错误地进行了肺移植手术,并导致患者严重受伤甚至死亡,那么谁应该承担责任?我们要责怪监督手术的医生吗?我们会责怪机器人背后的程序员吗?即使机器人没有意识,我们还会责怪它吗?如果我们试图用人工智能实现医疗工作的自动化,这些就是我们将面临的困境。

执法人员

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

马特·波波维奇在 Unsplash 上的照片

就像心理健康专家和医生的工作一样,成为一名执法人员需要社交和情商,以及超越最先进人工智能能力的情景意识水平。虽然可以训练机器开枪或检测道路上超速的车辆,但有限的记忆 AI 无法理解对其他人的安全有威胁的紧急情况。例如,记忆有限的 AI 可能能够追踪到建筑物中的活跃枪手,但无法理解枪手正在将人类生命置于危险之中,并导致建筑物中的人们恐慌。

用武器武装机器,把一个社区的人的生命交给没有意识的机器,也会带来伦理问题。如果我们武装没有感情的机器,让它们成为我们警察或军队的一部分,是什么阻止它们成为无情的杀人机器?如果警察队伍的很大一部分由机器人组成,一个社区真的会感到舒适和安全吗?如果一台机器打伤或打死了一个正在执勤的市民,谁该负责?这些问题只是凸显了一个事实,那就是我们还没有为人工智能自动化执法工作做好准备。

摘要

虽然人工智能确实是一个可以执行许多任务的强大工具,但我们需要了解人工智能的局限性,特别是在自动化人类工作方面。今天存在的最先进的人工智能形式,包括 GPT-3 等最先进的模型,是有限记忆人工智能。记忆有限的人工智能可以从过去的数据和经验中学习,但缺乏与人类的思想和感情互动的能力。这种能力通常被称为心理理论,在人类的许多工作中都需要。

如果没有社交和情商,AI 永远无法真正取代所有人类的工作。在心智理论人工智能成为现实之前,许多基本工作仍将留给人类。

加入我的邮件列表

加入我的邮件列表,获取我的数据科学内容的更新。当你注册的时候,你还会得到我免费的解决机器学习问题的逐步指南!也可以在 Twitter 关注我,了解内容更新。

当你这么做的时候,考虑加入媒体社区,阅读成千上万其他作家的文章。

来源

  1. A.辛慈,理解人工智能的四种类型,从反应式机器人到有自我意识的存在,(2016),对话。
  2. 长度 Greenemeier,深蓝 20 年后:AI 如何在征服国际象棋,(2017),《科学美国人》。
  3. E.赫希博士,医学中移情的作用:一个医学学生的视角,(2007),AMA 伦理杂志。

我们准备好迎接人工智能的脚本小子了吗?

原文:https://towardsdatascience.com/are-we-ready-for-the-script-kiddies-of-ai-754b23f5fcf8?source=collection_archive---------14-----------------------

人工智能校准和安全

我们为什么不更担心没人能解释什么样的人有资格从事人工智能工作?

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

大师 1305 创作的学校照片

它始于一条深夜推特:

“我对许多没有接受过统计学培训的人工智能/人工智能工程师感到震惊。这在我看来很荒谬。想知道这是趣闻还是真实的事情?”来自@bellmar

我根本没想到会得到回应,当然也没有一群机器学习专家——其中一些我甚至不认识——跳出来说…基本上是的

在某些情况下,“是的,但是谁在乎呢?”

术语“脚本小子”描述的是没有经验的技术专家(历史上称为黑客),他们复制并粘贴别人写的他们不理解的代码。尽管它被广泛用作贬义词,但脚本小子心态是我们中的许多人如何从软件开始,下载代码,对其进行更改并观察结果。我们通过反复试验的严格探索了解了代码的作用。如果他们不失去兴趣,脚本小子最终会成长为高质量的软件工程师。

在试图为人工智能和机器学习工程师构建有效工具的过程中,我们也意外地赞同在这里应用脚本小子心态。允许开发人员加入预先训练好的模型的基础设施和应用到处都是。你如何知道你所依赖的人工智能产品是否是由一个深刻理解模型及其背后的数学的从业者构建的,而不是从 Stack Overflow 复制并粘贴代码的人?你不知道。

软件是一个通过接纳非传统背景、重新熟练工人和自学者而蓬勃发展的领域。我本人没有接受过计算机科学方面的正式培训,我对编程的第一次尝试本质上是脚本小子——我不会对此进行评判。尽管人工智能是用软件编写的,但它与传统软件的不同之处在于,看似正常工作和实际正常工作之间的界限要宽得多。你不能只盯着结果,然后推断机器学习模型是无偏的或没有错误的。

安全状态图

那些关注我的文章的人会知道,我一直在思考很多关于安全科学以及它如何适应(或不适应)人工智能的发展。有很多谈论,特别是在国防工业,围绕如何监管人工智能以确保它是负责任的和道德的。你如何控制算法的开发和使用?你认为谁应该为在 AI 的指导或协助下做出的错误决定负责? 我们如何确保这项技术安全?

奇怪的是,这里的政策对话专注于一个目标,安全科学家会告诉你这是不可能的:我们永远无法生产出不会造成伤害的人工智能技术。

但是另一方面……不可能生产出符合那个标准的任何东西。人工智能,电动工具,儿童玩具…任何可以使用的东西都可能被滥用。

一项技术不被认为是安全的,因为它是无害的。 一项技术被认为是安全的,因为操作者能够准确地评估和减轻使用它的风险。汽车不安全,因为不可能把汽车撞到树上。医疗器械不安全,因为不可能用它们伤害人。我们对电插座的安全性很有信心,并不坚持认为它们有某种智能功能,可以防止我们将叉子插入其中。

当我们确信可以预测一项技术对我们的交互会有什么反应时,我们就认为这项技术是安全的。我们不应该监管人工智能以防止负面结果,而是应该管理操作员和技术之间可能的状态。把它想象成一张图是很有用的,在图中,行动和背景因素创造了行动和反应的网络。我们通过限制这种状态图来使技术“更安全”——也就是说,限制可能改变操作员预测系统响应能力的事情的数量。

缩小状态图的一种方法是取缔一些状态。我们要求汽车配备刹车、安全带和安全气囊,因为这些功能降低了某些驾驶风险。总体风险越少,操作者就越容易相信他们了解驾驶车辆的总体风险,因此汽车变得更安全。

但是我们缩小状态图的另一种方法是提高操作员的能力。当操作员可以是任何人、任何年龄、任何经验水平时,当操作员与一项技术交互时,我们可能看到的行为集是不可能的大。当我们能够保证操作员具有一定的经验水平,并且已经掌握了一定的背景知识时,我们就消除了状态图中更多的边。

换句话说,汽车不安全,因为不可能撞上它们。我们要求汽车配有安全带,司机佩戴安全带。但是,我们也要求司机有一个最低限度的驾驶经验和基本知识测试的执照。

然而,当谈到让人工智能变得安全的问题时,我们只剩下一个问题:首先谁是操作者?操作员是建立和训练模型的机器学习工程师吗?那个人有多少经验?所有人工智能工程师必须掌握哪些基本知识?相关的学位或证书有哪些?

还是运营商就是下游用户?人工智能集成工具的使用是否应该被限制在接受过特定培训的人身上?

我们不会让没有市政工程认证的人去造桥,也不会让没有行医执照的人去做手术。现在,在人工智能重大突破的迷雾中,我们表现得好像有一些神奇的政策修正,将消除人工智能的所有负面结果,同时仍然让任何人都可以构建和使用它。

也许这是个坏主意。人工智能从业者真的没有医生、律师、房地产经纪人或我们要求人们获得许可才能从事的任何其他角色重要吗?

我们签了统计数据了吗?🤔

原文:https://towardsdatascience.com/are-we-stats-sig-yet-c78686392b26?source=collection_archive---------22-----------------------

先决条件:这个故事是为有运行实验经验的技术人员和业务人员编写的。

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

卡洛斯·穆扎在 Unsplash 上的照片

TL;DR——实验的目标是做出决定,而不是追求特定的显著性水平。

这是在你的业务部门进行最关键实验的第 14 天。你的领导在工作聊天中向你发出 pings 命令,并问:“我们开始了吗?”

您快速运行 t-test 并报告,“嗯,我们在 90%的显著性水平上几乎是 stats sig。”

“好吧,但是我们什么时候能达到 95%的统计签名?”,领导回复。

你指回方差图来解释为什么有些实验即使设计得很好也达不到 95%的统计 sig。不太符合数学,领导回答,“但我们需要做些什么才能得到统计签名?”

好吧…

我们都经历过,对吧?

首先,让我们提醒商界人士“统计签名”是什么意思。

统计显著性(stats sig)是什么意思?

根据维基百科:

在统计假设检验中,当给定零假设的情况下一个结果不太可能发生时,该结果具有统计意义。更准确地说,一项研究的定义的显著性水平,用α表示,是假设零假设为真,该研究拒绝零假设的概率;一个结果的 p 值,p,是在假设零假设为真的情况下,获得至少是极端结果的概率。根据研究标准,当 p≤α时,结果具有统计学意义。研究的显著性水平在数据收集之前选择,通常设置为 5%或更低——取决于研究领域。

大多数数据科学家认为:

统计显著性意味着我们的实验结果不是由于随机的机会。这让我们对我们的决策充满信心,行业标准是使用 95%的统计显著性水平(p ≤ 0.05)。

根据大多数线索:

我们获得影响力、人数或晋升的防弹证据。

Stats sig 很重要,但它可能不是我们应该关注的事情。追逐像 95%显著性这样的技术阈值通常会减缓组织学习和迭代的机会。最终,决策从来都不是完美的。

**杰夫·贝索斯说,“大多数决策可能需要你希望拥有的大约 70%的信息。**如果你等了 90%,在大多数情况下,你可能很慢。”

简而言之,比相关性更好的事情就是学会采取行动。我们是否需要达到 95%显著性水平的高严谨性,这一切都取决于。应该问的问题是,我们能否在当前显著性水平上根据观察到的影响做出决策。

此时,您的利益相关者可能会问“我们没有进行统计签名的原因是什么?”这是一个公平的问题。以下是一些最常见的:

  • 样本量太小 —大多数情况下,这种情况可以在您设置实验之前通过运行功效分析来估计某个效应量(预期影响)所需的样本来回答。我说“大部分时间”是因为不是所有我们测试的产品都有历史数据来计算方差和估计影响大小。经验法则是,效应大小越小,方差越高,所需样本越大。
  • 影响太小——不是一切都好看。大多数实验失败是因为撞击不存在。延长实验时间不是解决办法。如果在估计的时间内没有看到预期的效果,最好继续前进。
  • 主要指标糟糕 —您的指标不代表您的假设,您可能使用了更难检测的滞后指标,您没有护栏指标来了解任何其他潜在的不利因素,或者您可能有太多或太少的指标。外面有很多文章,有时它更像是一门艺术(煞费苦心地与你的利益相关者保持一致,并不断完善它)而不是科学。

总之,实验的目标是做出决定,而不是追求特定的显著性水平。不要误解我,“统计信号”很重要——它验证你的假设是否有力,它给你一个信号,告诉你你的产品是否有效,它让每个人都高兴,但过分强调无助于决策。正如贝佐斯所推断的——价值在于决策的速度!下一次,如果有人问你,“我们开始签约了吗?”深呼吸,冷静下来,让我们帮助他们理解为什么这可能不是最重要的问题。给他们发这篇文章,祈祷吧🤞,并希望他们喜欢它。

这是我的第一篇文章,非常感谢你能说到这一步!如果你觉得它有趣,请鼓掌并分享它!如果你想联系,在 LinkedIn 上联系。

✌·莉莉

我们对 AI 的思考是不是错了?

原文:https://towardsdatascience.com/are-we-thinking-about-ai-wrong-4c826f9615c0?source=collection_archive---------22-----------------------

播客

Divya Siddarth 谈人工智能的更好范例,以及台湾如何在技术治理方面领先

苹果 | 谷歌 | SPOTIFY | 其他

编者按:这一集是我们关于数据科学和机器学习新兴问题的播客系列的一部分由 Jeremie Harris 主持。除了主持播客,Jeremie 还帮助运营一家名为sharpes minds的数据科学导师初创公司。

人工智能研究经常被框定为一种人类与机器的竞争,这将不可避免地导致人类的失败,甚至被人工超级智能大规模取代,这些人工超级智能拥有自己的代理意识和自己的目标。

Divya Siddarth 不同意这种框架。相反,她认为,这种观点导致我们关注人工智能的应用,这些应用既不像它们可能的那样有利可图,也没有足够的安全性来防止我们遭受危险的人工智能系统的长期潜在灾难性后果。她应该知道:Divya 是微软首席技术官办公室的政治经济学家和社会技术专家。

她还花了很多时间思考政府能够——也正在——做些什么,以将人工智能的框架从与人类直接竞争的集中系统转向更具合作性的模式,这种模式将人工智能视为一种由人际网络利用的便利工具。达薇亚指出台湾是数字民主的一个实验,台湾正在做的正是 T21 所做的。

以下是我最喜欢的一些外卖食品:

  • Divya 通过*启示的透镜来看待技术。*启示是一项技术的特征,它支持或限制我们对它的使用(“我们可以使用的杠杆”),并以微妙的方式塑造我们与技术的互动,这可能会对社会产生意想不到的重要影响。以 Instagram 为例,它有各种各样的启示,旨在使上传和分享图片变得非常非常容易。Instagram 的广泛采用——以及这些特定功能的广泛采用——导致了一个社会,在这个社会中,我们许多人都感到有一定的压力,要在没有其他方式的情况下拍摄和分享照片。同样,像 Twitter 这样的平台也有启示(比如点赞和评论区),将用户推向表演、两极分化和分裂的行为。尽管公司的既定使命可能很重要,但它对可提供性的具体选择在决定其对社会的影响方面同样重要。
  • Divya 将这种启示的概念扩展到了人工智能。她认为,今天的人工智能已经偏向于更少人类合作和更多人类竞争的应用。例如,强化学习明确地将机器学习框架为其目标是创造追求与我们不同目标的独立代理。这种类似代理的美学让人们更难将人工智能视为促进人类合作的工具,因为它正式将人工智能代理与人类决策过程分开。
  • Divya 指出,台湾是一个找到了更具建设性、以人为本的方式使用技术和人工智能来促进社会凝聚力和建立共识的国家的例子。简而言之:台湾使用一个叫做 pol.is 的工具开发了两个审议平台。这些平台允许公民就特定的政策问题发表意见,并确定共同观点的集群以及不同集群之间的共同点。重叠区域与潜在的解决方案一起被强调,结果是一组启示,它们有助于达成共识而不是竞争。

你可以点击这里在 Twitter 上关注达薇亚,或者点击这里在 Twitter 上关注我。

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

章节:

  • 0:00 介绍
  • 1:55 达薇亚的背景
  • 6:30 台湾的技术管理
  • 17:30 台湾科技教育
  • 28:30 当前人工智能思维的问题
  • 36:35 对复制人类行为进展的反对意见
  • 44:15 给新公司的建议
  • 57:00 等待人类文明集体有机地拿出解决方案
  • 1:01:44 个总结

我们是否在逆向思考可解释性?

原文:https://towardsdatascience.com/are-we-thinking-about-explainability-backwards-c9a719cb1250?source=collection_archive---------28-----------------------

模型可解释性

在构建人工智能解决方案之前,你应该能够回答三个问题

围绕人工智能的一个普遍问题是它的黑盒性质,但为可解释性而设计是可能的。不是每个用例都需要一个可解释的解决方案,但是很多都需要。当我们开发 XAI 时,我们经常问,“我们能解释什么?”在这篇文章中,我要求我们首先考虑最终用户。我强调了在构建你的人工智能解决方案之前要考虑的三个问题,这样它就可以通过设计来解释。

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

照片由法库里安设计Unsplash 上拍摄

动机

我的大部分博士研究都围绕着可解释的数据融合。结果,我花了相当一部分时间研究可解释的人工智能。可解释性引起了我的兴趣,因为它涉及到算法将自身的一些东西翻译给用户。哲学辩论围绕着解释的构成,但是算法解释需要向用户展示一些关于它们自己的东西。

我们以不同的方式发展 XAI 方法。一种常见的方法是独立于人工智能开发 XAI。例如,流行的 LIME [1]位于人工智能之外,允许它是人工智能不可知论者;然而,这限制了它所提供的解释类型。第二种方法是从一开始就将 XAI 直接开发到我们的人工智能中——通过设计来解释。我的 XAI 之旅凸显了在开发之初考虑最终用户的重要性。我鼓励你们思考需要建立什么,而不是能够建立什么——这是我学到的最重要的一课。

设计的可解释性给了人工智能工程师最大的自由来开发相关的解释,以赋予算法的用户权力。在我的职业生涯中,我创造了多种 XAI 方法,并将我所学到的归纳为三个以用户为中心的问题— 谁、什么、如何

1。谁会使用你的人工智能?

开发相关解决方案需要了解谁将使用您的人工智能。会不会是一个:

  • 人工智能工程师
  • 数据科学家
  • 商业领袖
  • 农民
  • 医生
  • 人工智能驱动车辆的驾驶员
  • 法官
  • 军事领导

这些人每天都在做出重大的、改变生活的决定,所以了解谁得到了解释以确保我们得到正确的翻译是非常重要的。无人驾驶汽车的驾驶员想要驾驶汽车时使用的图像的显著图,这是值得怀疑的。不要误解我,显著图有效地突出了图片的一部分,但我认为这种解释与人工智能模型构建器最相关。并不是所有的 XAI 都会产生相关的解释,首先,考虑谁会收到解释将确保你正在构建相关的 XAI。今天大多数可用的 XAI 集中于将信息传递给人工智能从业者,而不是终端用户。为了制造有效的 XAI,我们必须打破这种模式。我们必须跳出框框思考。我们必须理解用户的用例,以便在正确的时间向他们传递正确的信息。

**考虑最终用户似乎是显而易见的,对吗?**但是,大多数 XAI 开发者本质上都是数学家,我们专注于扩展数学,而不是翻译给非数学家。首先,我会挑战我们去理解我们的用户,在开发 XAI 时发现最好的 媒介 (双关语)来交付翻译。

例如,让我们考虑一个对预测产量感兴趣的农民。他们不会关心模型的可解释性。但是,他们需要了解人工智能正在做什么,以及如何使用它来增强他们的决策。

。他们想知道什么?**

在考虑你的 XAI(或人工智能)影响时,识别和理解你的受众可以说是最关键的因素。一旦被认可,对话就可以面向他们希望解决的问题;他们不知道他们需要什么 AI 或者 XAI。根据我的经验,用户希望了解每个数据点对最终模型输出的影响。为什么?揭示数据影响允许他们干预以改变结果。

例如,考虑一个预测一个农民今年玉米产量的算法。农民的目标是最大化产量和最小化成本,因此了解每个数据点的影响将为农民提供最佳决策信息。作为一名数据科学家/人工智能工程师,识别这个痛点为实施适当的解决方案打开了大门,以便将这些信息传递给农民。农民根本不在乎相关系数——他们拿它没办法。

3.我们如何向他们传达这一点?

到目前为止,我们只讨论了理解谁将使用 XAI (AI)以及他们想知道什么。在这一节中,我们将深入探讨 XAI 的一些方法。存在许多不同的思想流派来产生解释。仅在我的酒吧里,我就用了三种不同的类型。我喜欢这篇论文中的框架[5]。作者深入研究了几种不同的解释,他们的分类考虑了最终用户。

“……我们可以区分出文本解释、可视化、局部解释、举例解释、简化解释特征相关性。”[4]

每种方法在适当的背景下都是必不可少的,因为人是不可概括的,所以不可能建立一个完全适合每个人的解释。使用每种类型的解释,我们可以开发出一个可以在多个层次上解释的解决方案,以达到更广泛的受众。

Bryce,这在高层次上是很棒的,但是我们如何实现一个可以通过设计来解释的系统呢?问得好。让我们考虑一下我们的农民。

举例

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

杰西·加德纳在 Unsplash 上的照片

第一部分指出了我们基于不同特征预测整个农场玉米产量的问题。接下来,我们确定了我们的最终用户——农民。然后,我们强调了对基于预测收益率的干预选项的兴趣。现在,我们必须确定将农民的愿望融入我们的 AI/XAI 设计的最佳方式。

我们可以将我们的问题描述为“开发一个玉米产量的预测模型,为农民提供改善产量的选择。”

我将增加一个约束来实现一个解决方案——使用 2/3 的计算智能分支。你能花点时间想想你会如何解决这个问题吗?方法有很多。

为了设计一个利用计算智能的这两个分支的系统,我们需要了解我们需要这些分支中的哪些算法。具体来说,一个模糊推理系统(FIS) 将提供底层分类能力,以有效地为农民的田地建模。查看这篇文章可以找到一个很好的例子。FIS 由可学习的参数组成。例如,我们可以优化规则的数量和每个规则的隶属函数。如果你读过我的 CI 文章,你会发现这是一个使用遗传算法的绝佳机会。染色体是每一组规则,其中每个基因是一个模糊隶属函数的参数。以这种形式设置问题允许我们优化最能预测农民产量的 FIS 参数。你猜怎么着?一旦我们知道了参数,我们就可以明确地将它们传递给农民。有两种可能的解释。首先,文本解释陈述了一个规则:

“如果氮含量高,产量也会高.”

或者是一张隶属图,它显示了相对于玉米已经施用的量,最佳的氮量是多少。

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

绿线代表学习到的隶属函数——“高”,橙色框代表当前的氮量。这意味着农民需要产出更多的氮。背景由朱利安·谢尔提供。

在这两种情况下,农民都可以采取直接措施,在农田里施更多的氮肥。因此,我们有效地为农民创建了一个 XAI,并提供了相关的解决方案。

结论

我相信,作为人工智能的创造者,我们最终有责任确保我们的算法翻译正确的信息。释放数据和人工智能的潜力是我们的责任,我们必须利用这一点。所以很多时候,我们作为人工智能工程师,把自己限制在目前可能的范围内(用目前的数学)。让我们颠倒一下我们对 XAI 的看法——让我们在计算之前先考虑用户。让我们跳出框框思考。让我们为没有明确解决方案的问题创造解决方案。转变我们的视角让我们能够跳出框框思考,并为非专业人士设计解决方案。要做到这一点,需要了解用户,他们需要和想要知道什么,并实施有效的 AIs 人工智能。

参考文献

[1]https://homes.cs.washington.edu/~marcotcr/blog/lime/

https://ieeexplore.ieee.org/document/9149954/

[3]https://ieeexplore.ieee.org/document/8491501

[4]https://ieeexplore.ieee.org/document/9494563

[5]https://www . science direct . com/science/article/pii/s 1566253519308103

Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的人脸识别系统 深度学习 (源码+文档)Python毕业设计-基于Python的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值