我这算学渐构走火入魔了嘛?

如果你想记住变量类型的意思,那就是
str 字符串
int 数值
bool 布尔值
这就跟乘法表一样一一得一,二二得四。
如果从整体代码作为输入,那你不可能重现之前见到的情况。

在识别
a: str
先用一个知识提取出“冒号”后面的字符串是一个变量的类型,这明显是判别模型需要建模的,之后才能继续用上面那个“乘法表”来知道是哪个类型的变量,再之后才可以根据这个类型的变量和其他概念的关系去做某些事情,这又牵扯出其他概念的模型或需要记忆的表格。

终于交流到我想问的核心问题了。
我觉得这里同时包含了两个步骤:
1.判断这类东西是「变量类型声明」的代码;
2.根据「变量类型声明」推断出「变量类型」;

你刚才列无法通过「经验预测」解决的情况,即「变量类型声明」的外延是无限的,这个我认同,但如果我把「变量类型声明」和「变量类型声明的右边」连同「int」,「str」,「num」,「bool」等所在的层面单独设定为对象层,那么我是不是可以直接通过记忆以下几种情况来塑造「经验推测」的能力解决这个问题。
1.变量类型声明的右边右边部分是str,那么变量的类型就是字符串。
2.变量类型声明的右边部分是int,那么变量的类型就是整数
……

可以,但你这个知识无法解决你刚才的目的,你需要先判断出来哪个部分是类型声明,哪个部分是变量名称,才能再利用你这个知识判断变量的类型是什么。

你要判断的是电脑屏幕上那段代码是什么,你这个模型只能应用在已经被其他知识识别好的,已经进入你脑子里的抽象概念上。

你经过这么多年的阅读理解,已经把识别这些符号的能力内隐化了,所以你没有意识到你做了这些事情。

嗯,其实我想问的是,虽然有一个判别的过程,但因为对象层是设在「类型声明」,「类型声明的右部」与「int」,「bool」,「str」所在的层面。所以最终是不是还是可以归类为「经验预测」?

那肯定是经验预测,但就已经不是你最开始问的问题了。

而且你这个是三个经验预测,不是一个。

经验预测的输入是一个,而不是一类。

你自己把输入输出列一下就知道了。

1 个赞

大概明白了,感谢回答

你的这几步操作中,出现了多个误解。下面给你详细解释。为了让你看明白,我会把每个知识的输入输出列出来:

第一步,你知道学习「类型注解」的概念,就是去渐构「“类型注解”的判别模型」。这一点没问题。

第二步,你想要渐构「一个关于类型注解的联结模型」,你选择的是从「类型注解」推测「数据类型」。但这个知识的输入输出是什么呢?根据你把「对象层直接切换成 “str”,“int”,“number”」来看,你所认为的输入输出是:

  • 输入空间:{str,int,number}
  • 输出空间:{字符,整型,数字}

发现问题了吗?str和字符本来就是一个意思,如果你的“str”代表的是字符,那么你其实是渐构从「数据类型的写法」到「数据类型」的推测。但这个根本就不用渐构。这属于「语言知识」中的「建立“文字-含义”指代」,是靠记忆的。课程里有讲「语言知识的特殊之处」:


这是第一个问题。除此之外,还有一个问题。那就是,你实际写代码的时候,别人会直接写给你 {“str”,“int”,“number”} 中的一个吗?

实际写代码时,你看到的是下面的「任意字符串」:

  • age: int = 25
  • def greet(name: str): print(f"Hello, {name}")
  • def get_pi() -> float: return 3.14159
  • age = 25
  • result = "The answer is " + str(42)
  • “科学是第一生产力”

你其实一直都在运用 从「任意字符串」推测「数据类型」 的能力,其输入输出是:

  • 输入空间:{所有可能的字符串}
  • 输出空间:{字符,整型,数字,…}

而这其实并不是「“类型注解”的判别模型」

「“类型注解”的判别模型」的输入输出是:

  • 输入空间:{所有可能的字符串}
  • 输出空间:{是类型注解,非类型注解}

这个知识将「一种特定的写法」归成了一类,称为「类型注解(概念)」。拥有这个知识后,你可以做出如下判断:

  • age: int = 25 :是类型注解
  • def greet(name: str): print(f"Hello, {name}") :是类型注解
  • def get_pi() -> float: return 3.14159 :是类型注解
  • age = 25 :非类型注解
  • result = "The answer is " + str(42) :非类型注解
  • “科学是第一生产力” :非类型注解

「类型注解(概念)」的知识,和**从「任意字符串」推测「数据类型」**的知识,还不一样。甚至即使你没学过「类型注解(概念)」,也不妨碍你对后者的掌握。

「类型注解(概念)」相当于是一种事后总结,告诉你,这类代码有什么特点。


有关「类型注解(概念)」的一个真正的「联结模型」是:

从「任意类型注解(概念)」到「是否影响代码运行」的推测

  • 输入空间:{所有的类型注解}
  • 输出空间:{影响代码运行,不影响代码运行}
  • 实际应用:age: int = 25 中的 : int 不影响代码运行,去掉也没关系。

再回答你关于「联结模型」是记忆还是学习的问题。

你其实是将「联结模型」的「输入空间」搞错了:
「联结模型」的「输入空间」是「输入概念的外延」,而不是「输入概念」这个抽象类别:

例如,如果你要把「类型注解」作为输入概念,建立「联结模型」时,你不能把「类型注解」这个抽象类别作为输入空间,那样的话,输入空间里的元素必然只有一个了,而是应该把「类型注解」的外延,作为输入空间。

换句话说,「联结模型」是需要「判别模型」才能实现的:

例如,从「类型注解(概念)」到「是否影响代码运行」的推测 这个联结模型,你为了能够明确「类型注解(概念)」的外延,你本身就需要「“类型注解”的判别模型」。

2 个赞

感谢于博的回答,我其实还有一个问题,就是面对一段学习材料的时候,感觉脑子里一堆渐构相关的概念,但是很懵,有种不知道先出什么牌的感觉。这个是要先分析出自己学习知识的目的,还是先看知识的学习材料,在解决的是什么推测任务,然后再确定是要塑造「经验推测」还是「模型推测」的能力嘛?

我真心觉得课程应该多出点「经验推测」和「模型推测」的练习题,我感觉这个真的是最重要的,比分析知识的输入输出还要优先,不然第一步就掐住了 :smiling_face_with_tear:

这么说吧,我见过大多数情况,都是大家对渐构世界模型的掌握不牢,把模型推测误以为成了经验推测,在学习新知识时,经验推测很少

是啊,而且感觉目前课程对于「经验推测」和「模型推测」相关练习题也还是比较少 :face_with_crossed_out_eyes:

「经验推测」和「模型推测」的区分主要在于对课程基础概念的掌握,「抽象层级」「五组概念」「信息推测」「输入输出」,这些概念掌握不牢。「模型推测」和「经验推测」就区分不出来。

1 个赞

比如说,你发的这个贴,其问题的核心,就在于你没掌握好「联结模型」的概念。在课程这个位置 明确强调了,a到b的联结模型,其实是「a 的外延(输入空间)」到「b 的外延(输出空间)」的「映射关系」。

下面有原文:


还有例子

但你明显忽略了这块,把「a到b的联结模型」理解成了「a(抽象单位)到b(抽象单位)的关系」,这必然会导致任何联结模型推测都会变成“经验推测”

ok,这几点重点再打一下基础,一定要把「经验推测」和「模型推测」的判别模型建好,不然感觉后面的都不用学了 :face_holding_back_tears:

于博我来举个例子:python中的"枚举的作用"。如果我的目的是判断任何一个具体的枚举的作用(即是输入是空间,但是输出只有一种情况,有点类似常量函数。那我是不是可以当作是模型预测??如果我的目的是知道枚举在各种python写的项目中的作用,是不是就是经验预测?

我其实这个目的有点把握不准,于博能顺便帮我判断一下这里到底应该选哪一个目的才是正常的呀?

模型预测的输出不可能只有一种情况,模型的定义中输出必须是空间,然后你可以将你说的枚举举几个具体的例子出来,然后说哪个例子属于经验预测,这个表述也有很多歧义。
最后正不正常等于博答吧,我不清楚你的意思。

所以常函数不是模型吗?

你前面说的枚举的作用那块,好像跟我理解的不太一致,因为枚举的作用本身就是一个集合,这块可能也没说到一起去。
然后常量函数如果在《世界模型》中,模型的输出是被描述成了输出空间的,具体为啥我忘了,之前社群里讲过,假如f(x)=5,那么输出空间是{5},输出空间的定义是: 所有可能输出常量 所组成的集合。

这里断墨里面讲过,太阳早上从东方升起是知识还是信息?答案,都可以,某些知识映射过于简单,所以你可以直接记忆就行,就是经验预测,但记忆可以被理解为过拟合的学习,你记忆时,你第一步还不是要明确输入和输出,而且你渐构神经网络模型后,不是也要抑制模型的遗忘吗。
本质上是你不够熟练这套理论,内化后,瞬间就可以做出判断,这就是一个新情况,你可以自己创造一个概念,如简单知识的记忆处理等等