Benford关于GPT-2语言模型的法律

我几个月前写了一篇关于本公司法律如何从语言模型中出现,今天我决定评估相同的方法来检查如何GPT-2会表现出一些句子,事实证明,它似乎也捕获了这些权力法。您可以找到一些具有下面的示例的绘图,绘图显示了指定特定句子的数字概率,例如“人口大小“,显示:$$ p(\ {1,2,\ ldots,9 \ \ vert \ text {“具有群体大小”})$$的GPT-2中型(345米):

将本文引用:Christian S. Perone,“Genford法律上的GPT-2语言模型”亚洲金博宝Terra Incognita.,14/06/2019,//www.cpetem.com/2019/06/benford-law-on-gpt--language-model/

NLP字表示和Wittgenstein语言哲学

我做了一个介绍性谈话在过去的嵌入词上,这篇文章是关于字向量背后的哲学想法的一部分的扩展版本。本文的目的是提供Ludwig Wittgenstein的主要思想,即与分布的技术密切相关的语言学思想(我将讨论这意味着稍后),例如Word2VEC [Mikolov等人。,2013],手套[Pennington等人。,2014年],跳过思想的载体[Kiros等人。,2015]等等。

One of the most interesting aspects of Wittgenstein is perhaps that fact that he had developed two very different philosophies during his life, and each of which had great influence. Something quite rare for someone who spent so much time working on these ideas and retreating even after the major influence they exerted, especially in the Vienna Circle. A true lesson of intellectual honesty, and in my opinion, one important legacy.

Wittgenstein是苏州霍尔哲学的狂热读者,并以同样的方式从康德遗传到康德的哲学,特别是关于可以进行实验的划分(现象) or not (Noumena.),Contrasting things as他们出现了我们从事因为他们自己,维特根斯坦的结论是,斯彭彭伯尔哲学从根本上得以根本正确。他相信在Noumena.R.ealm, we have no conceptual understanding and therefore we will never be able to say anything (without becoming nonsense), in contrast to the现象我们的经验领域,我们确实可以谈论并试图了解。通过将逻辑等安全基础添加到现象世界,他能够推理世界如何通过语言描述,从而绘制如何用语言或概念性思想表达的问题。

来自Wittgenstein的第一个主要语言理论,在他的Tractatus Logico-哲学,被称为“图片语言理论“(AKA图片意义)。这个理论基于与绘画的类比,其中Wittgenstein意识到一幅画与自然景观的绘画非常不同,然而,熟练的画家仍然可以通过将补丁或与自然景观现实的冲程来代表真实景观。亚洲金博宝Wittgenstein给出了这个名字“逻辑形式“到这组绘画与自然景观之间的关系。这种逻辑形式,这两个表示的内部关系集是为什么画家能够代表现实,因为在两个表示中的逻辑表单相同(在这里,我称之为“表示”,以与斯舍彭霍尔和康德术语连贯,因为现实也是我们的代表,区分它和本身)。

这种理论很重要,特别是在我们的背景下(NLP),因为Wittgenstein意识到同样的事情发生了语言。我们能够在句子中组装单词以匹配相同的逻辑形式我们想要描述的内容。逻辑形式是让我们能够的核心想法talk about the world。然而,后来Wittgenstein意识到他刚刚选择了一项任务,其中包括语言可以表现和创造它周围意义的整体理论的大量任务。

事实是,除了代表(描绘)现实之外,语言可以执行许多其他任务。用语言,正如Wittgenstein注意到,我们可以给出订单,我们不能说这是某种东西的照片。当他意识到这些反例子时,维特根斯坦抛弃了picture theory of language并采用了更强大的比喻一个工具。在这里,我们正在接近语言中的含义的现代看法以及许多现代机器学习技术背后的主要基础知识,用于良好的单词/句子表示。一旦你意识到语言作为一个工具,如果你想了解它的含义,你只需要了解你能做的所有可能的事情。如果你认为是一个单独的单词或概念,它的含义是所有用途的总和,这种意义是流体,可以有许多不同的面孔。这一重要思想可以在下面的众所周知的句子中概括:

一个词的含义是它用语言。

(...)

One cannot guess how a word functions. One has to look at its use, and从那里学习

- Ludwig Wittgenstein,哲学调查

一种nd indeed it makes complete sense because once you exhaust all the uses of a word, there is nothing left on it. Reality is also by far more fluid than usually thought, because:

我们的语言可以被视为一个古城:迷宫的小街道和广场,旧房和新房,以及各种时期的附加的房屋(......)

- Ludwig Wittgenstein,哲学调查

John R. Firth是一种语言学家,也普遍普遍存在这种上下文的依赖性,否则涉及威丝斯坦的哲学调查作为追索的哲学调查,以强调上下文的重要性,其中我在下面引用:

将文本作为组成部分在情况下,有助于识别识别使用的情况以来的含义。正如Wittgenstein所说,“词语的含义在于他们的使用。(菲尔。调查,80,109)。播放语言游戏的日常练习识别海关和规则。It follows that a text in such established usage may contain sentences such as ‘Don’t be such an ass !’, ‘You silly ass !’, ‘What an ass he is !’ In these examples, the word ass is in familiar and habitual company, commonly collocated with you silly-, he is a silly-, don’t be such an-.你应该通过它保持的公司了解一句话!屁股的含义之一是其惯常搭配,与上述其他单词引用。虽然Wittgenstein正在处理另一个问题,但he also recognizes the plain face-value, the physiognomy of words. They look at us !'句子由单词组成,这就足够了。

- 约翰·雷斯

这一想法学习了它保留的公司的含义正是什么Word2vec.(以及基于同源的其他基于计数的方法)正在通过数据和学习无监督的时尚,通过设计为预测上下文(或反之亦然,根据您使用跳过而设计-gram或cow),这也是灵感的来源Skip-Thought Vectors。Nowadays, this idea is also known as the “Distributional Hypothesis“,这也被用于语言学以外的字段。

现在,如果我们看看工作,这很令人惊讶Neelakantan,等人。,2015年,称为“在向量空间中的多个嵌入的高效非参数估计“, where they mention about an important deficiency in word2vec in which each word type has only one vector representation, you’ll see that this has deep philosophical motivations if we relate it to the Wittgenstein and Firth ideas, because, as Wittgenstein noticed, the meaning of a word is unlikely to wear a single face and word2vec seems to be converging to an approximation of the average meaning of a word instead of capturing the polysemy inherent in language.

在“证据”一词的例子中可以看出单方面的多朝向性质的具体例子,其中意义与历史学家,律师和物理学家都可以完全不同。声明不能算作一个法院的证据,而历史学家的唯一证据是历史学家的唯一证据,而传闻甚至没有出现在物理学中。Elmo最近的作品[彼得斯,马修E.等。2018年]使用语言模型目标的LSTM的不同级别的特征也是一个非常有趣的方向,具有良好的结果,朝着将上下文的语义结合到词表示中并打破浅表示的传统,如Word2vec所示。亚洲金博宝

我们在一个激动人心的时刻,这真的是amazing to see how many deep philosophical foundations are actually hidden in Machine Learning techniques. It is also very interesting that we’re learning a lot of linguistic lessons from Machine Learning experimentation, that we can see as important means for discovery that is forming an amazing virtuous circle. I think that we have never been self-conscious and concerned with language as in the past years.

I really hope you enjoyed reading this !

– Christian S. Perone

将本文引用:Christian S. Perone,“NLP字表示和语言的Wittgenstein哲学”亚洲金博宝Terra Incognita.,23/05/2018,//www.cpetem.com/2018/05/nlp-word-representations-and-the-wittgenstein-philosophy-of-language/

References

Magee,Bryan。哲学史。1998年。

Mikolov,Thomas等。矢量空间中字表示的高效估计。2013. https://arxiv.org/abs/1301.3781

Pennington,Jeffrey等。手套:全球向量,用于Word表示。2014. https://nlp.stanford.edu/projects/glove/

Kiros,Ryan等。跳过思想的载体。2015. https://arxiv.org/abs/1506.06726

Neelakantan,Arvind等人。载体空间中多个嵌入的高效非参数估计。2015. https://arxiv.org/abs/1504.06654

Léon,杰奎琳。搭配的意思。语料库语言学的焦点归零。2007年。

使用InferSent Embeddings和安全双方计算的隐私保留句话语义相似性

保留隐私计算

保密的计算或安全计算是一个密码学的子字段,其中两个(双方或2PC)或多个(多方或MPC)方可以一起评估函数,而无需透露有关各方私有输入数据的信息彼此。问题和第一个解决方案是在1982年推出的,通过安德鲁·姚明对后来被称为“的惊人突破姚的百万富翁问题“。

姚明的百万富翁问题是两个百万富翁,爱丽丝和鲍勃,有兴趣了解他们哪一个更富裕但是没有透露彼此他们的实际财富。换句话说,他们想要的是概括的:Alice和Bob希望安全地编写函数,而不知道输入数据上的计算结果以外的任何内容(它仍然私有)。

为了使问题混凝土,Alice有一个如10美元,Bob有50美元的金额,而他们想知道的是哪一个更大,没有鲍勃向爱丽丝或爱丽丝透露鲍勃数量a。同样重要的是要注意,我们也不希望相信第三方,否则问题将是与可信政党交流的简单协议。

正式地我们想要的是共同评估以下功能:

r = f(a,b)

如私人价值观一种andB.被私有到它的唯一所有者以及结果R.将仅仅是一方或两个方。

这似乎非常违反,这亚洲金博宝可能是一个可能解决的问题,但对于许多人的惊讶,可以解决一些安全要求。由于最近的技术发展,如FHE(完全同性恋加密),忘记转移乱码的电路,类似的问题开始实现实际使用情况,现在许多公司正在使用信息交换,安全地点,广告,卫星轨道碰撞等应用中的许多公司使用。

我不会进入这些技术的细节,但如果你对OT背后的直觉感兴趣(令人遗憾的转让),你肯定应该阅读Craig Gidney完成的惊人解释这里。There are also, of course, many different protocols for doing 2PC or MPC, where each one of them assumes some security requirements (semi-honest, malicious, etc), I’m not going to enter into the details to keep the post focused on the goal, but you should be aware of that.

问题:句子相似度

我们想要实现的是使用隐私保留计算来计算句子之间的相似性,而无需披露句子的内容。只是为了提供一个具体的例子:Bob拥有一家公司,并在句子中描述了许多不同的项目,如:“该项目是关于构建一个深入的学习情绪分析框架,这些框架将用于推文“拥有另一家竞争对手公司的爱丽丝也有不同的句子中描述的不同项目。What they want to do is to jointly compute the similarity between projects in order to find if they should be doing partnership on a project or not, however, and this is the important point: Bob doesn’t want Alice to know the project descriptions and neither Alice wants Bob to be aware of their projects, they want to know the closest match between the different projects they run, butwithout disclosing项目理念(项目描述)。

句子相似性比较

现在,我们如何在不公开有关项目描述的信息的情况下交换有关Bob和Alice的项目刑期的信息?

一种天真的方法是只需计算句子的哈希,然后只比较哈希检查它们是否匹配。然而,这将假设描述完全相同,并且除此之外,如果句子的熵很小(如小句子),则具有合理的计算能力的人可以尝试恢复句子。

另一种问题的方法(这是我们正在使用的方法),是将句子嵌入空间中的句子进行比较。我们只需要使用机器学习模型创建句子嵌入式(我们将使用初学者后来)然后比较句子的嵌入式。但是,这种方法也提出了另一个问题:如果鲍勃或爱丽丝列举了一个可以从另一方的嵌入到项目的近似描述的SEQ2Seq模型,那么怎么办?

认为人们可以恢复对嵌入的句子的近似描述并不是不合理的。这就是为什么我们将使用双方安全计算来计算eMbeddings的相似性,以便Bob和Alice将计算嵌入式的相似性没有揭示他们的嵌入,保持项目的思想安全。

在下面的图像中描述了整个流程,其中Bob和Alice共享相同的机器学习模型,之后他们使用该模型从eMbeddings从句子转到,然后是嵌入空间中的相似性的安全计算。

图概述整个过程。

生成句子嵌入着indersent

BI-LSTM MAX-POOLING网络。资料来源:来自自然语言推理数据的普遍句子表示学习。Alexis Conceau等人。

初学者是由Facebook开发的通用句子表示的NLP技术,该技术使用受监管培训来产生高可转让的表现。

They used a Bi-directional LSTM with attention that consistently surpassed many unsupervised training methods such as the SkipThought vectors. They also provide aPytorch实现我们将用于生成句子嵌入。

Note: even if you don’t have GPU, you can have reasonable performance doing embeddings for a few sentences.

生成句子Embeddings的第一步是下载并加载预先训练的inderSent模型:

导入numpy作为np导入火炬#培训模型来自:https://github.com/facebookresearch/inf金宝博游戏网址ersent glove_embs ='../dataset/glove/llove.840b.300d.txt'demersent_model ='infersent.allnli.pickle'#加载训练缺陷型模型模型= torch.load(Infersent_model,map_location = lambda存储,loc:storage)model.set_glove_path(glove_embs)model.build_vocab_k_words(k = 100000)

现在我们需要定义一个相似度量来比较两个向量,并且对于该目标,我将是余弦相似性(188betcom网页版)由于它非常简单:

cos(\ pmb x,\ pmb y)= \ frac {\ pmb x \ cdot \ pmb y} {|| \ pmb x ||\ cdot || \ pmb y ||}

正如您所看到的,如果我们有两个单位向量(具有规范1的向量),则等式分母中的两个术语将是1,我们将能够删除方程的整个分母,仅留下:

cos(\ hat {x},\ hat {y})= \ hat {x} \ cdot \ hat {y}

因此,如果我们将传感器正常化为单位规范(这就是为什么向量在上面的等式中戴着帽子),我们可以使余弦相似性成为一个简单的点产品。这将在稍后将使用框架使用框架来执行此点产品的安全计算时,帮助我们在计算相似距离时。

因此,下一步是定义将采取一些句子文本并将其转发给模型以生成嵌入物的函数,然后将它们标准化为单位向量:

#此功能将将文本转发到模型中,##获取嵌入式。之后,它将将其标准化#到单位向量。def编码(型号,文本):embedding = model.encode([text])[0] embedding / = np.linalg.norm(嵌入)返回嵌入

正如您所看到的,此功能非常简单,它将文本送入模型中,然后它将划分嵌入式规范的嵌入矢量。

现在,出于实际原因,稍后将使用整数计算来计算相似性,但是,Infersent生成的嵌入物当然是真正的值。因此,您将在下面的代码中看到我们创建另一个函数缩放浮点值并删除基数点and将它们转换为整数。还有另一个重要问题,我们将在以后使用的框架进行安全计算不允许签名整数,因此我们还需要将Embeddings值剪切在0.0和1.0之间。这当然会导致一些近似误差,但是,在剪切和使用有限的精度下缩放后,我们仍然可以获得非常好的近似值(我使用14位进行缩放以避免在点产品计算期间稍后溢出问题):亚洲金博宝

#此函数将缩小嵌入以#删除基数点。def刻度(嵌入):scale = 1 << 14 scale_embedding = np.clip(嵌入,0.0,1.0)*缩放return scale_embedding.astype(np.int32)

您可以在您的安全计算中使用浮点,并且有很多支持它们的框架,但这更棘手,因此,我使用整数算法来简化教程。上面的功能只是一个破解,以便简单。很容易看到我们可以在后面恢复这个嵌入而没有太多的精度损失。

现在我们只需要创建一些我们正在使用的句子样本:

#Alice_sentences = ['我的猫喜欢走过我的键盘','我喜欢宠爱我的猫',] #bob句子列表bob_sentences = ['猫总是走过我的键盘,]

并将它们转换为嵌入式:

#Alice句子alice_sentence1 =编码(型号,alice_sentences [0])alice_sentence2 =编码(型号,alice_sentences [1])#bob句子bob_sentence1 =编码(型号,bob_sentences [0])

由于我们现在的句子和每个句子也被标准化,我们可以通过在向量之间进行点产品来亚洲金博宝计算余弦相似性:

>>> np.dot(Bob_sentence1,Alice_sentence1)0.8798542 >>> NP.dot(Bob_sentence1,Alice_sentence2)0.62976325

正如我们所看到的,鲍勃的第一个句子最相似(〜0.87),而Alice第一句比爱丽丝第二句(〜0.62)。

由于我们现在拥有嵌入品,我们只需要将它们转换为缩放的整数:

#缩放Alice句embeddings alice_sentence1_caled = scale(alice_sentence1)alice_sentence2_caled = scale(alice_sentence2)#缩放bob句embeddings bob_sentence1_scaled = scale(bob_sentence1)#这是句子的单位矢量empedding >>> alice_sentence1阵列(0.01698913,0.0014404,0.0010993,...,0.00252409,000828147,0.0046533],dtype = float32)#这是缩放矢量作为整数>>> Alice_sentence1_Scaled阵列([278,0,18,...,41,135,76],dtype = int32)

现在,使用这些嵌入式缩放整数,我们可以进入第二部分,我们将在哪里进行两方之间的安全计算。

双方安全计算

为了在双方(Alice和Bob)之间进行安全计算,我们将使用阿比框架。一种B.Y implements many difference secure computation schemes and allows you to describe your computation as a circuit like pictured in the image below, where the Yao’s Millionaire’s problem is described:

姚明的百万富翁问题。取自Aby文档(https://github.com/encryptogro金宝博游戏网址up/aby)。

一种s you can see, we have two inputs entering in one GT GATE (greater than gate) and then a output. This circuit has a bit length of 3 for each input and will compute if the Alice input is greater than (GT GATE) the Bob input. The computing parties then secret share their private data and then can use arithmetic sharing, boolean sharing, or Yao sharing to securely evaluate these gates.

Aby真的很容易使用,因为您可以描述您的输入,共享,门,并且它将为您进行其余的,例如创建套接字通信通道,在需要时交换数据等。但是,实现完全用C ++编写I’m not aware of any Python bindings for it (a great contribution opportunity).

Fortunately, there is an implemented example for ABY that can do dot product calculation for us, the例子是这里。我不会在这里复制示例,但我们必须更改的唯一部分是读取我们之前创建的嵌入向量而不是生成随机向量并将位长度增加到32位。

之后,我们只需要在两个不同的机器上执行应用程序(或通过下面的本地仿真):

#这将执行服务器部分,-r 0指定角色(服务器)#,-n 4096定义了向量的维度(infersent生成#4096维嵌入式)。〜#./innerProduct -R 0-n 4096#和另一个过程(或其他机器,但是对于另一台机器,您必须明显指定IP)。〜#./innerProduct -R 1-n 4096

我们得到以下结果:

Alice_sentence1和Bob_sentence1 = 226691917的内在产品,Alice_sentence2和Bob_sentence1 = 171746521

即使在整数表示中,也可以看到Alice的第一句话的内部产品和BOB句子更高,这意味着相似性也更高。但是,我们现在将这个值转换回浮动:

>>> scale = 1 << 14#这是我们应该得到的点产品>>> np.dot(alice_sentence1,bob_sentence1)0.8798542#这是我们在安全计算的内部产品>>> 226691917 / scale ** 2.00.8444931#这是我们应该得到的点产品>>> np.dot(alice_sentence2,bob_sentence1)0.6297632#这是我们在安全计算的内部产品>>> 171746521 / scale ** 2.0 0.6398056

正如您所见,我们的近似值非常好,即使在低精度数亚洲金博宝学和无符号整数要求的情况下也是如此。Of course that in real-life you won’t have the two values and vectors, because they’re supposed to be hidden, but the changes to accommodate that are trivial, you just need to adjust ABY code to load only the vector of the party that it is executing it and using the correct IP addresses/port of the both parties.

我希望你喜欢它 !

– Christian S. Perone

将本文引用:Christian S. Perone,“使用Infersent Embeddings的隐私保留句话语义相似性,并确保双方计算”亚洲金博宝Terra Incognita.,22/01/2018,//www.cpetem.com/2018/01/privacy-preserving-infersent/