概念网络上的高效考试方式

对于一个相互没有联系的集合中每个个体的考试,这里考试指检查每一个是不是好的或者是不是被理解掌握好的,我们除了尝试每一个个体没有更好的办法。

然而,如果个体之间存在关联,我们就可以把考试和推断结合起来,找到比尝试每一个个体更高效的方法。然而,有的时候,这样的关联尽管存在但是很难事先知道。例如,在考某个学生的一堆物理概念的掌握程度的时候,尽管物理概念之间的关联肯定存在,但是到底如何关联,需要通过检测这个学生同时掌握哪一些,才知道。然而,我们正好想避开这样的穷举法检测。因此,这是一个相互依赖的难题。那有没有一些可能具有代表性的关联呢,尽管这样的关联在不同的被试身上不一定表现一致,仅仅表现为某种平均意义上的关联?如果有,这样的关联,能不能不依赖于检测得到呢?得到这样的关联之后,又如何和推断结合起来,帮助实现更高效的考试呢?这个帖子尝试回答这些问题,或者说,给出一个回答这些问题的框架。

我们认为,概念之间的逻辑关系,可以做为关联的客观表现。以汉字为例,汉字之间通过结构关系相互联系,这一点是客观的(尽管繁体字和简体字在汉字之间是如何从结构上联系起来的这一点上不一样。先考虑例如仅仅简体字)。例如:木——林——森,人——从——众,水——冰——淼,(木,一)——本,(人,本)——体。当然,这个客观的结构联系是否就能代表逻辑联系,是有待讨论的。也就是说,在汉字集合上,存在着一个逻辑关系网络,网络的每一条边代表上面举例中的一个字\(i\)成为另一个字\(j\)的一部分这样的结构关系\(A=\left(a^{i}_{j}\right)_{N\times N}\)。这个结构关系上面叠加了一层逻辑关系。这个逻辑关系,我们通过下面的几个权重——已知认识一个字,推断另外一个字也认识的条件概率——来表达。任何一个时候每一个字\(j\)的检测状态记为(\(c_{j}k_{j}=\left\{11, 1-1, 01, 00, 0-1\right\}\))分别代表检测过认识,检测过不认识,没有检测过推断认识,没有检测过推断状态为未知,没有检测过推断不认识,这五个状态。注意,凡是检测过的字的状态就不再用下面的条件概率来更新了。

  1. 认识上层字\(i\),推断下层字认识\(j\)的概率,\(\omega^{i, \left(1\downarrow\right)}_{j} \),和结构矩阵的元素\(a^{j}_{i}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{i, \left(1\downarrow\right)}_{j} =a^{j}_{i}=1\)。
  2. 认识下层字\(i\),推断上层字认识\(j\)的概率,\(\omega^{i, \left(1\uparrow\right)}_{j} \),和结构矩阵的元素\(a^{i}_{j}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{i, \left(1\uparrow\right)}_{j} = 0\)。
  3. 不认识上层字\(i\),推断下层字不认识\(j\)的概率,\(\omega^{i, \left(-1\downarrow\right)}_{j} \),和结构矩阵的元素\(a^{j}_{i}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{i, \left(-1\downarrow\right)}_{j} =0\)。
  4. 不认识下层字\(i\),推断上层字不认识\(j\)的概率,\(\omega^{i, \left(-1\uparrow\right)}_{j} \),和结构矩阵的元素\(a^{i}_{j}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{i, \left(-1\uparrow\right)}_{j} =a^{i}_{j}=1\)。

在这里,简化模型的理念是认识更复杂的意味着认识简单的子结构,不认识更简单的子结构则更复杂的合成字肯定不认识。注意,这个是对原始问题的一个极大的简化。

现在,我们有了一个结构网络\(A\),四个这个网络上的逻辑关系\(\Omega^{\left(1\downarrow\right)}, \Omega^{\left(1\uparrow\right)}, \Omega^{\left(-1\downarrow\right)}, \Omega^{\left(-1\uparrow\right)}\)。每一个顶点有五个状态\(c_{j}k_{j}=\left\{11, 1-1, 01, 00, 0-1\right\}\)。初始时刻,所有顶点的状态都是未检测也无从推断\(p\left(0_{j}0_{j},t\right)=1\)。在检测过程中,对于确定性模型,任意一个顶点的状态也是以上五个状态之一。对于随机模型,我们有顶点处于状态\(c_{j}k_{j}\)的几率为
\[p\left(c_{j}k_{j}, t\right).\]
对于给定的顶点\(j\),这些概率对\(ck\)的取和归一。同时,前面两个状态的取值只能是\(0,1\),也就是,
\[p\left(1_{j}k_{j}, t\right) = 1,0.\]

由于由这些概率的特殊取值,为了更好地描述后面的动力学过程,我们定义一套新的状态变量。定义一个离散变量\(\xi_{j}\)和两个连续变量\(\eta^{\left(1\right)}_{j}, \eta^{\left(-1\right)}_{j}\)更加合适。描述变量采用\(\xi_{j}=\pm 1, 0\), \(\eta^{\left(\pm1\right)}_{j} \in \left[0, \infty\right]\)。\(\xi_{j}=1\)表示\(1_{j}1_{j}\)态,\(\xi_{j}=-1\)表示\(1_{j}-1_{j}\)态,\(\xi_{j}=0\)的时候,看\(\eta^{\left(\pm1\right)}_{j}\)。这个时候推断状态的几率分别是
\begin{align}
q^{\left(01\right)}=p\left(0_{j}1_{j},t\right) = \frac{\eta^{\left(1\right)}_{j} \left(t\right) – \eta^{\left(-1\right)}_{j} \left(t\right)}{\eta^{\left(1\right)}_{j} \left(t\right) + \eta^{\left(-1\right)}_{j} \left(t\right)}\theta\left(\eta^{\left(1\right)}_{j} \left(t\right) – \eta^{\left(-1\right)}_{j} \left(t\right)\right) \notag \\
p\left(0_{j}0_{j},t\right) = 1-\frac{\left|\eta^{\left(1\right)}_{j} \left(t\right) – \eta^{\left(-1\right)}_{j} \left(t\right)\right|}{\eta^{\left(1\right)}_{j} \left(t\right) + \eta^{\left(-1\right)}_{j} \left(t\right)} \notag \\
q^{\left(0-1\right)}=p\left(0_{j}-1_{j},t\right) = \frac{\eta^{\left(-1\right)}_{j} \left(t\right) – \eta^{\left(1\right)}_{j} \left(t\right)}{\eta^{\left(1\right)}_{j} \left(t\right) + \eta^{\left(-1\right)}_{j} \left(t\right)}\theta\left(\eta^{\left(-1\right)}_{j} \left(t\right) – \eta^{\left(1\right)}_{j} \left(t\right)\right)
\end{align}
按照这样的状态标记,我们取每一个顶点的状态变量为:\(\xi_{j}, \eta^{\left(1\right)}_{j}, \eta^{\left(-1\right)}_{j}\)。实际上,我们看到,系统的状态当\(\xi_{j}=\pm 1\)的时候很简单(就是\(1_{j}1_{j},1_{j}-1_{j}\)态)。当\(\xi_{j}=0\)的时候,系统在状态\(c_{j}k_{j}=\left\{01, 00, 0-1\right\}\)子空间上的概率矢量是,
\[\left[q^{\left(01\right)}, 1-q^{\left(01\right)}, 0\right]^{T},\]
或者
\[\left[0, 1-q^{\left(0-1\right)}, q^{\left(0-1\right)}\right]^{T}.\]
也就是说,状态变量\(\xi_{j}\)和\(\eta^{\left(1\right)}_{j}, \eta^{\left(-1\right)}_{j}\)仍然不是反映系统状态的最简单的表达方式(有信息没有被用到)。不过,暂时,我们就以这套状态变量为准:
\[\xi_{j},\eta^{\left(\pm 1\right)}_{j} \Longleftrightarrow p\left(c_{j}k_{j}\right). \]

现在,我们已经清楚了系统状态的描述\(P\)(每一个字都有一个状态分布函数,整体状态构成一个分布函数大矢量。这个矢量的具体写法可以采用直积或者直和,再说,现在用不着)和初始条件\(P\left(0\right)\),我们来构造一个动力学过程\(P\left(t-1\right)\rightarrow P\left(t\right)\)。将来,我们要讨论这样的问题:在给定成本的情况下,如何让系统尽可能地达到某个预期状态,或者达到某个预期状态所需要的最少的成本。

我们先讨论动力学过程。每一步(记为\(t\)时刻),我们选择一个汉字\(i\)来检测是否被试认识。

  1. 如果认识(不认识),则更新这个字的状态为\(\xi_{i}=1\)(\(\xi_{i}=-1\))。
  2. 然后,考察这个字的一级近邻。对于每一个一级近邻\(j\)按照如下方式更新其状态:
    1. 如果\(\xi_{j}=\pm 1\),停止更新\(j\)的状态
    2. 否则(也就是\(\xi_{j}=0\)的时候),取\(\eta^{\left(\pm 1\right)}_{j}\)的当前值\(\eta^{\left(\pm 1\right)}_{j}\left(t-1\right)\),按照\(i\)的状态来更新\(j\)的状态
      1. 如果\(\xi_{i}=1\),则
      2. \begin{align}
        \eta^{\left(1\right)}_{j}\left(t\right) = \eta^{\left(1\right)}_{j}\left(t-1\right) + \omega^{\left(1\uparrow\right),i}_{j}+ \omega^{\left(1\downarrow\right),i}_{j}
        \end{align}

      3. 如果\(\xi_{i}=-1\),则
      4. \begin{align}
        \eta^{\left(-1\right)}_{j}\left(t\right) = \eta^{\left(-1\right)}_{j}\left(t-1\right) + \omega^{\left(-1\uparrow\right),i}_{j}+ \omega^{\left(-1\downarrow\right),i}_{j}
        \end{align}

把以上的过程合起来,也就是

  1. 对字\(i\)做检测以后,如果认识(不认识),则更新这个字的状态为\(\xi_{i}=1\)(\(\xi_{i}=-1\))。
  2. 然后,考察\(i\)这个字的一级近邻。对于每一个一级近邻\(j\)按照如下方式更新其状态:
  3. \begin{align}
    \eta^{\left(\xi_{i}\right)}_{j}\left(t\right) = \eta^{\left(\xi_{i}\right)}_{j}\left(t-1\right) + \left(1+\xi_{j}\right)\left(1-\xi_{j}\right)\left[\left(\omega^{\left(\xi_{i}\uparrow\right),i}_{j}+ \omega^{\left(\xi_{i}\downarrow\right),i}_{j}\right)\right]
    \end{align}

必要的时候可以计算概率\(p\left(c_{j}k_{j},t\right)\) 。这个过程描述了测得一个新的字是否认识以后在整个网络上的传播。上面的过程仅仅考虑传播一步,也就\(i\)的邻居们。一个更加复杂的模型可以考虑多步传播:也就是计算一级近邻的状态概率矢量之后,拿着这个更新了的矢量,再去计算二级近邻的状态矢量。

再来讨论目标。

现在,我们希望得到一个(有顺序的)检测的集合,或者一个按照检测结果实时自适应生成检测顺序的算法。这个算法或者集合要做到以下两个目标中的一个。

  1. 给定检测成本\(C=\sum_{j}c_{j}\)的情况下,最大化以下的目标函数的检测顺序是什么:
    \[K=\sum_{j,c_{j}} \left|p\left(c_{j}1_{j}; C\right) – p\left(c_{j}-1_{j}; C\right)\right|\]
    最后的参数\(C\)表示\(C\)时刻,如果记每一次检测新的汉字算一个时间步的话。
  2. 或者期望达到某个特定的\(K_{aim}\),最小的\(C\)是多少,实现这样的最小\(C\)的检测顺序是什么。

用新的状态记号,目标函数可以写做
\[K=\sum_{j} \left(\frac{\left|\eta^{\left(1\right)}_{j}-\eta^{\left(-1\right)}_{j}\right|}{\eta^{\left(1\right)}_{j}+\eta^{\left(-1\right)}_{j}}\right).\]
注意,当\(\xi_{j}=\pm 1\)的时候,我们强行更新了\(\eta^{\pm 1}_{j}\)来把前者的信息转入到后者之中,于是,这个目标函数的定义看起来简单一些。

在这个语言下,问题成了:给定一个检测顺序,或者一个检测顺序的自适应算法,整个问题就是一个Markov链,然后这个链需要满足上面两个目标之一的话,怎么办?

当然,不用这个整体系统状态的语言,就是问什么样的集合的选择或者顺序的选择,或者生成顺序的算法的选择,能够保证用最少的检测次数,了解最多的汉字是否被认得。

对于简化模型——关系矩阵\(\Omega\)的元素就是\(0,1\)的情况,相当于讨论一个双态的支配集问题:两个状态可以在有向无权网络上传播一步,问某种意义上最小的需要检测出来确定状态的集合是什么。当然,可以预见,这个最小集合会和每一次检测的结果有关系:极端情况,假设每次检测结果都是\(1\)的最小集合,和每次检测结果都是\(-1\)的,肯定是不一样的。因此,这个问题,不是单纯的两个单状态支配集问题的相加。

换一个角度来看,在简化模型的情况下,这个问题是双关系网络(同一套顶点,有两种不同状态——\(\pm 1\)——的可以在各自的网络上传播\(\Omega^{\pm 1}\))上的支配集问题。整体目标把两种状态混合了起来,于是就不再是两个单关系网络的相加了。有了这个检测问题的实际问题的背景,提出并解决这个“双关系网络上的支配集问题”,是有一般意义的。在更加一般的关系矩阵\(\Omega\)取值的条件下,这个问题相当于把双关系网络上的确定性支配集问题,变成了双关系网络上的概率性支配集问题。

简单的算法:暴力搜索,把大量的检测顺序都试一遍,中间可以考虑采用自加强机器学习等人工智能算法(缺陷,计算量大);或者采用贪心算法,每一步尝试检测一个汉字,然后选择对于目标函数提升最大的汉字做为检测对象(缺陷,不一定是好的顺序,忽略了长程连接)。

有更好的算法吗?

两个注:

  1. 可以考虑给每一个顶点增加一个初始信息:在未被检测的时候的可能被认识的概率。初始时刻\(\xi_{j}=0, \omega^{\pm 1}_{j}=0\),或者\(\xi_{j}=0, \omega^{\pm 1}_{j}=\omega^{\pm 1}_{j,0}\)。当然,这个初始权重\(\omega^{\pm 1}_{j,0}\)如何赋值就引入了这个问题的另外一个变量——目标检测人群的典型识字情形。
  2. 直接共认矩阵和总共认矩阵:先从数学上来说,给定一个两个字的直接共认矩阵——也就是结构联系,是否可以以及如何计算出来两个字的最终共认矩阵?然后,问实际上,如果我们来测量的话,得到的共认概率矩阵,是直接呢还是间接呢?这个问题的讨论见新帖:从共现到结构

科研服务平台的设想

科学家之间的合作越来越普遍。如果促进合作让合作更方便呢?这里提出一个科研服务平台的设想,包含以下几个部分:综述论文整理点评和推荐系统、科研项目文档存储平台、科研众包平台。

综述论文整理点评系统,简称综述文摘,主要收集各个学科的有影响力的综述论文期刊的论文信息,并且,收集用户对这些论文的点评,然后供用户分类浏览这些信息,以及按照一定的方式做推荐。

科研项目文档存储平台,简称科研云盘,提供两项服务:文档存储空间和同步功能、文本文档的协作和版本控制。第一个功能主要实现单一用户在不同客户端上的文档同步。第二个功能主要实现多用户文档协作。

科研众包平台,简称科研众包,主要是提供科研项目里面几个关键点——问题、数据、分析技术、实现研究的人员条件和实现研究的物质条件——的信息分享促进合作。有的科学家有好问题,有的有数据,有的有时间,有的有技术,有这样一个平台来帮助科学家匹配有可能可以取得比依靠科学家个人的匹配更好的效果。

综述文摘项目只要做好综述文章的收集和整理——这个基本没难度,对研究者和学生来说,已经是有意义的事情。相当于综述文章统一门户。如果还能够提供评论的收集整理排序和分享——这个需要依靠草根用户,那就会有很大的促进作用。实际上,导师的作用,很大程度上就是一篇综述文献——对一个领域的更加全面和深入的了解。有了这个,遇到一个对学科认知不太全面和深入的导师,就不是个大问题。有好的导师,则能够相互补充。

科研云盘,一方面提供独立服务,解决每一个科研团队都需要自己来搭建文档协作平台的问题。另一方面,云盘上所存储的信息,可以做为众包平台的基础。同时,现在很多期刊要求数据公开,这个时候这个平台也可以是论文发表的时候所用的补充信息库。这个在技术上没有任何难度。信息加密存储也不是问题。

科研众包,则是想办法更好地发挥现有的科学研究资源。由于学科领域边界的限制,很多研究项目,不太可能完全依靠研究者的个人关系来寻找合作者。但是,这个平台基本上依赖于草根用户的参与。做好有难度。所以,最好通过前面的两个项目来获得人气,来把这个项目打包发展。

这样的纯粹公益性质的服务于一大群人的工作对于提升参与单位的声誉是非常有意义的。就好像Wikipedia还有arXiv,人人都可以收益。

训练学习机用来求解Schrodinger方程

机器学习最近实在是火。各个领域都在用和发展。据说神经网络可以拟合任意的函数。于是,我想起来一个神奇的主意:如果把从势函数求解基态波函数的过程看成一个映射(函数)的话,能不能用机器学习来得到一个这个映射的机器呢?这样,我们就可以用现在已经求解出来的Schrodinger方程的解来训练这个学习机,然后用训练出来的学习机来求解新的Schrodinger方程。我把这个问题叫做:Machine learning-based Schrodinger solver(机器学习Schrodinger方程求解器)。

问题的具体化:以一维量子系统的束缚态问题为例,离散化势函数,得到一个矢量。用数值求解方法得到这个系统的离散化的基态波函数,得到另一个矢量。把这样的输入矢量和输出矢量的对输入合适的学习机,训练学习机。检验这个学习机是否能够求解新的Schrodinger方程。

工作大致思路:如果我们仅仅考虑多项式形式的势函数的话,可以比较简单地得到输入矢量(各阶多项式的系数)。然后我们需要一个Schrodinger方程的数值求解器,在自然边界条件(无穷远处渐近为零)下,来得到训练集的输出矢量。接着需要找到合适的学习机来训练。最后,做检验和泛华。

实际意义:这个从势函数到波函数的映射不是线性的,因此,在数值求解的过程中,除非运用微扰论,已知的方程的解不能重用。也就是说,每一个问题需要数值求解一次微分方程或者转化成矩阵以后计算矩阵的最小本征值对应的本征向量。这样的矩阵通常维数是很高的。更一般地来说,如果学习机的表现能够重用已知的解或者能够降低计算的复杂度,那么,这样的方式可以用在其他的微分方程的求解上,甚至密度泛函理论(DFT)的有效波函数上,这样能够提升量子化学计算等这种需要大量计算多例子系统基态能量和波函数的计算任务的效率。

理论意义:这个所谓的映射实际上比较复杂——实际数值计算是求解这个输入的势函数对应的Schrodinger方程的基态解,那么,这么复杂的映射——不是简单地能够看做对输入的势函数矢量某种操作,还能够通过机器学习来得到吗?更加深刻的问题——实际上,这个方程还有其他激发态的解,如果也能得到的话,这里存在量子态的干涉(叠加)现象,难道机器学习连这个东西都能默默学下来。不过,这个问题暂时不讨论。

相似的问题(竟然已经有人在思考相似的问题):http://www.anl.gov/articles/machine-learning-algorithm-aims-accelerate-materials-discovery
http://www.ipam.ucla.edu/programs/long-programs/understanding-many-particle-systems-with-machine-learning

解剖另一只麻雀来看科学思维

最近有个帖子特别火《一个让中国人断子绝孙的公司》。这个帖子和上次的我解剖的那只麻雀“不要买加碘盐”的帖子类似地,或者说更严重地,没逻辑。为了再一次强调独立思考能力和一点点信息获取能力,这些科学素养和科学思维方式,这里我再来解剖一只麻雀。

帖子的主要论点是:孟山都公司企图(主观)或者事实上在(客观)毒害全世界,尤其是中国;于是,我们要起来把它赶出中国去。其论证思路大概如下:农民用的孟山都的农作物种子每年都要买新的,不能自己留种,这是这个公司为了垄断(注意,这个和是否在中国应该没有联系。我没有查证,猜的。如需要,应该可查);孟山都公司的除草剂能够除草而农作物不死,是这家公司特意让除草剂不能杀死某植物,然后把这个植物的基因转到农作物里面,因此,也是阴谋;最近,权威机构认定草甘膦(就是上面那个除草剂?)属于2A类致癌物质,这也是这家公司的阴谋或者不属于主观阴谋,但是肯定是客观上在毒害全世界(这个好像也不是中国与否的问题,除非这个草甘膦的成分在中国的不一样。我也没有查,猜的,应该是一样的,而且权威机构也是国外的机构。所以,也不清楚为什么强调中国);孟山都能够影响美国和中国的决策层,资本和权力机构共谋,所以黑身份,所以要赶出中国去;孟山都的产品受到非洲国家等抵制,附近其他国家收获了农作物而且自己挨饿也不要吃。

为了让这个论据更加好地支持论点,作者开篇做了感情铺垫:第一个场景,农民让“我”用除草剂,“我”很疑惑,怎么就能草死苗不死呢?第二个场景,以前我妈妈都留种,现在留种下一代长不出来,有人在种子上搞鬼。第三个问题,以前亩产很低,现在高很多,怎么可能?第四个问题,农作物虫子不吃,人能吃吗?

我稍微google了一下背景。类似的帖子一直有,而且很多很多人信,甚至影响了决策和农作物种植。最近又兴起的原因是,确实一个还算正式的国际机构把草甘膦列入2A类致癌物质。然后,我就去看了一下这个类别里面都是什么,其他更厉害的都是什么。没有找一手文献,仅仅看网络帖子我发现咸鱼和酒在更严重的级别(原则上,也应该找一手资料的,但是,好像论辩双方都没有疑义)。不过,这个是知识方面的信息。按照我的目的和习惯,这个方面,我不会作为攻击和分析的点。这里也是仅仅当做这个帖子兴起的背景,不作为我的论据。

现在,我们回到逻辑。

袁隆平杂交稻也不能留种(几百年前孟德尔就用豌豆杂交实验告诉我们了,杂交的东西的下一代可能性状不保,会返祖。不过,这是知识,不能作为我的论据。算了,忽略这个),也大大提高了亩产。我们也要把袁隆平赶出去?这个袁隆平的贡献,不能算太专门的知识,应该大多数人都了解的。于是,亩产高,不能留种,不能成为阴谋论的论据。万一作者真的觉得,也该把袁隆平和杂交稻赶出去呢?那我只好说没见过这么傻的。但是,好吧,这个类比性的反驳证据,我们不算好了。

在关于不能留种和亩产高很多的论述中,作者之所以用这两个东西做论据,背后还隐含了这样的逻辑链条:这个和以前我熟悉的农作物种植完全不一样了,不一样(而且白白好这么多,怎么可能白捡这么大的好处呢,肯定有相应的不好的地方),就是有问题。这是什么逻辑?人类科学和技术的发展使得我们得到了大量的好处,白白得的(很多时候,我们中国人付出了环境代价。但是,那不是必须的代价,可以鱼和熊掌兼得的)。要是白白得到的都不能用,那么汽车铁路不能用,得用牛车,或者相比于人抬,牛车的好处也是白白得到的,也不能用。社会的改变(不一样了)就一定是坏事?那只好让作者住山顶洞了。

再来说除草剂的阴谋:留着某个植物不杀,然后把这个植物转入农作物。就算孟山都是这样设计的,除了对生态问题的担心——杂草的集合如果太大可能影响生态平衡,又怎样呢?这是一个很好的科学方法啊。例如,我们想消灭一种特殊种类的蚊子,我们可以寻找一种药物直接针对这样的蚊子。我们也可以让其他种类的蚊子——假设有好的蚊子——种上疫苗,都对我们这种药物免疫,然后把这个药物投放给所有蚊子啊。这有什么问题吗?当然,如果孟山都公司在商业上这么运作的话,有垄断的嫌疑。但是,跟人类,尤其是中国的人类,有什么关系呢?这样就是在消灭人类,尤其是消灭中国人?中间的逻辑是如何过来的?

再说这个草甘膦的阴谋。上面已经提到,如果我们假设在中国的草甘膦和国外的没有区别(注意:这个也是作者的假设,因为那家权威机构检测的是国外的草甘膦,说致癌),那么,为什么说这家公司针对中国,让中国人断子绝孙了呢?当然,如果作者的逻辑足够好,在这里,他/她可以这样反驳我:你看,孟山都在毒害全世界,中国也是全世界的一部分,所以,也在让中国断子绝孙啊。要是这样,我就继续抠字眼下去:哪里断子绝孙了,说的是致癌,得癌症的可能性,就算有了癌症之后,肯定不能有子孙吗?更何况之前呢?

所以,这个标题已经到了,完完全全没有逻辑的地步了。就算那个致癌是很高的危险性,哪里中国了?哪里断子绝孙了?更何况排在酒和咸鱼的后面(说了不能拿知识和智力压人,只能用逻辑。实在不好忍住啊)。

那么,这个断子绝孙的结论从哪里来的呢?我再稍微查了查。有一个大概这样的说法:你看以前的农作物可以长出下一代,不用再次购买种子不可,现在的种子不能生育下一代。于是,人吃了这些作物,慢慢地,也就不能生育下一代了。这个难道是吃什么长什么的逻辑的延续?作者,我能不能也不要脸一下,你可能(或者你家这一支人)吃石头或者浆糊吃多了,慢慢地脑袋就按照石头或者浆糊一样长了,并且遗传下来了?

至于用非洲兄弟们的国家拒绝吃孟山都的农作物来佐证,呵呵,你为什么不支持和呼吁一下人家的少女割礼呢?你怎么不想想不用草甘膦之后,其他除草剂的危害呢?其他除草剂都是列在无敌无害系列的?或者想想农民增加的劳动力负担?或者想想产量降低以后多少人活不下去,上不了网?当然,这些还是算了,说好了不能用智力和知识来碾压的。

咱就说逻辑。论据到论点之间距离非常大。第一,论据中基本不体现中国的特殊性,论点中强调中国。作者的基本目的就是标题党,轰动一下。你要是这么说也好点啊:让我们把孟山都赶出地球,赶出银河系,它是在消灭银河系的未来啊。至少,逻辑上,通啊。

第二,论据中没有人生育的任何信息,论点中有断子绝孙,除非用吃什么补什么来补充论证。可是,用什么来论证吃什么补什么呢?除非作者家族从今天起吃浆糊,吃上几年或者你百年,脑子都成了浆糊。也不对,凭啥像过去以后就在脑子里呢?需要检验是不是多少年之后,全身都成了浆糊,才行。

第三,论据到论点的逻辑中还隐含着老的过去的就是好的,好处不能白白得到的思想。为什么呢?我为什么要问为什么呢?作者就没想讲逻辑啊。为什么我们不回去茹毛饮血住山洞啊,作者的这一支的某个时期的一个先人问这个先人的后辈。社会变化太快了,都能在网络上发表自己的见解了,我还是回山洞里画画壁画好了。

按照惯例,我这个分析帖子不涉及草甘膦是否真的危害很大,转基因作物是否真的安全的问题。我仅仅要求,作者们,你们讲点逻辑好不好?读者们,你们讲点逻辑好不好?不要标题党,不要人云亦云,独立思考,构建逻辑,多问为什么。

联系到平面几何教什么。
首先,证明的每一步需要用一个已经证明的定理来建立两个步骤之间的联系。
其次,证明过程可以需要运用各种构造性(例如辅助线,例如看成某个其他东西)证明或者反证法。
再次,从少数公理(公理本身从现实来,不过这个不属于平面几何而是科学领域)开始然后通过逻辑推理建立理论体系的这样的抽象化理论化方法。
最后,才是几何学的具体知识。

这些东西学好了,逻辑和思维方式自然就好了。再加上科学讲究证据理论联系实际的理念,多问几个问什么的习惯,科学思维就有了。科学知识忽略不计。当然,在真正学习的时候,这些几何和科学里面的重点,都要通过合适的例子来体现。

有心的老师们,按照这个思路,整理一下平面几何?

git服务器上已经建立的项目列表和本地目录,ssh端口修改

由于学校控制22端口,所以修改了ssh端口为7712(因此,直接访问机器的命令行需要改为:ssh git.systemsci.org -p 7712)。ssh服务器端修改端口号的办法是:修改/etc/ssh/sshd_config文件,在Port 22下面,添加Port 7712(注意不要去掉22端口,万一去掉7712端口有没有配置好,那你就登录不了这个机器了)。同时在/etc/ssh/ssh_config里面同样的地方也添加Port 7712。

在客户端可以在~/.ssh/下新建一个config文件(如果你是图形界面,则直接修改ssh图形客户端配置就可以),文件内容为:

Host YOUR_HOST
User YOUR_USER_NAME
Port YOUR_NEW_PORT

这一步对于git找到相应的端口非常重要。

这个文档的以下部分记录git服务器,git.systemsci.org上面管理的项目。关于git安装和使用见下文。
如果你已经通过~/.ssh/下新建一个config文件来识别端口号,则下面的命令中的端口号都可以去掉。如果你没有做这一步,则下面的命令中都加上端口号。当然如果是默认22的配置,则不用添加端口号。

  1. IO文档
    1. 服务器端在/home/git/IO.git
    2. 本地保存在Research/Input-Output/下面,跟踪对象是所有的.tex文件。

详细安装过程和使用方法如下:

  1. 在服务器端安装git: sudo apt-get install git-core,并添加git用户(sudo adduser git,注意密码),普通用户不用做这一步
  2. 在服务器端建立一个项目:mkdir IO.git。在这里,整个git目录只用于存储项目。因此,所有的项目直接放在~/git/下面。如果项目还没有在上面的列表上,普通用户需要完成这一步
  3. 在项目目录下面,初始化项目目录结构:git init –bare。这时候指有目录结构,什么具体内容都还没有呢。
  4. 回到本地机器准备加入内容
    1. 生成和上传一个ssh公钥到服务器上(参考如下帖子,需要git用户密码,请跟我联系):

      1. ssh-keygen -t rsa
      2. cat ~/.ssh/id_rsa.pub | ssh git@git.systemsci.org "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
      #这部分完成的事情首先是在本地自己的机器上产生一个id_rsa.pub公钥,然后把这个公钥上传到远程服务器,并且重命名为authorized_keys.

      完成这两步之后试试是否能够免密码访问服务器了。
    2. 已经存在的IO项目目录:把这个目录变成存储项目内容的本地目录(git init )。然后把远程项目拉过来同步到本地目录(git remote add origin ssh://git@git.systemsci.org/home/git/IO.git, git pull origin master)。接着把本地目录的内容加入到需要同步的列表(git add., git commit -m “massage” -a),然后把本地目录的内容推送到远程(git push origin master)
    3. 或者如果还没有这个项目的话,到预期存储IO项目的上一级目录(运行完成下面的目录会产生一个名字叫做IO的子目录)。然后运行:git clone git@git.systemsci.org:/home/git/IO.git,就会把整个服务器上的这个项目的内容完整地复制下来。
    4. 在本机这个项目目录下面编辑文档,并且用git add, commit, push之类的命令同步到服务器上。也可以安装图形客户端。
  5. 注意:最好只把文本文件当作git管理的对象,否则,由于要检查和跟踪变化,git会非常慢