V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Morriaty
V2EX  ›  程序员

计算机可以模拟“模糊的记忆”吗?

  •  
  •   Morriaty · 2018-09-04 11:22:38 +08:00 · 6769 次点击
    这是一个创建于 2271 天前的主题,其中的信息可能已经有所发展或是发生改变。

    人类是有“模糊的记忆”的概念的,比如儿时玩伴,名字是叫王小二呢,还是张小四呢?五年没听过的老歌,是 111235 呢,还是 555724 呢?

    那计算机如何模拟这种“模糊”的效果呢?计算机的记忆,无论是在硬盘里还是内存,似乎都是有或无二元对立的

    select id, name from friends where meet_age_at=13;
    
    
    id | name 
    -- | --
    1  | Harry Potter
    2  | null
    

    是因为计算机是数字信号,而生物是模拟信号吗?

    58 条回复    2018-09-05 18:31:18 +08:00
    ChillyPrince
        1
    ChillyPrince  
       2018-09-04 11:30:52 +08:00 via Android   ❤️ 4
    人脑更接近于神经网络而非数据库,所谓模糊的记忆,我觉得应该是输出一个较低的匹配概率
    listnodeptr
        2
    listnodeptr  
       2018-09-04 11:31:34 +08:00   ❤️ 13
    你看过 VCD 么,当 VCD 轻微损坏,播放视频时画面会有红绿蓝色块以及声音出现断断续续
    这就是模糊的记忆
    zhzer
        3
    zhzer  
       2018-09-04 13:11:28 +08:00
    就是,连续数据模拟离散数据失真的问题嘛
    简单点弄就量化之后加噪声
    PureWhiteWu
        4
    PureWhiteWu  
       2018-09-04 13:15:49 +08:00   ❤️ 1
    @listnodeptr 这个不一样,最终其实还是真实准确的数据,只不过变成了混乱的无意义的数据而已,计算机还是按照 VCD 上的数据进行播放的。
    YvesX
        5
    YvesX  
       2018-09-04 13:29:48 +08:00
    引入权重就好吧,比如一楼那个思路。
    liwufan
        6
    liwufan  
       2018-09-04 13:31:06 +08:00
    啥是模糊的记忆呢?“机器人”看自己的硬盘内存文件的时候,是不是像人类去医院拍片或者看显微镜那样是确实存在呢?对于“机器人”来说,会不会同时在发帖问---机器人是有“模糊的记忆”的概念的,比如擦写了 100 次以后残留在软盘磁粉上微弱磁场。那么人类如何模拟这种“模糊的记忆”?人类有血有肉,就在那里似乎都是有或无二元对立的?
    ShineSmile
        7
    ShineSmile  
       2018-09-04 13:32:43 +08:00
    人:给我干活。
    计算机:干什么?
    人:给我干活。
    计算机:???
    sampeng
        8
    sampeng  
       2018-09-04 13:32:44 +08:00
    我觉得。。计算机的记忆你觉得没有模糊的记忆,是因为你知道什么是对,什么是错。其实 google 出来的类似你说的这种,你不知道一个问题的答案。就显的是个"模糊的记忆"了。
    换句话说,你觉得人类有模糊记忆,是因为你不知道哪个是对的,哪个是错的。如果你知道,就无所谓对和错
    kaedea
        9
    kaedea  
       2018-09-04 13:33:41 +08:00 via Android
    经典计算机就连随机数都是用确切的数字模拟的... 模糊判断基本不可能
    TyteKa
        10
    TyteKa  
       2018-09-04 13:40:38 +08:00 via Android
    模糊数学。
    jasonyang9
        11
    jasonyang9  
       2018-09-04 13:40:53 +08:00   ❤️ 3
    代码的咖喱味再重一点就有了
    takato
        12
    takato  
       2018-09-04 13:48:17 +08:00
    Dropout
    lrzsw2008
        13
    lrzsw2008  
       2018-09-04 13:51:13 +08:00 via Android
    长期不通电的 ssd ?
    listnodeptr
        14
    listnodeptr  
       2018-09-04 14:15:16 +08:00
    @PureWhiteWu 破坏过程是随机的,所以最终数据不真实,破坏过程是持续非连续的,因此在不同时间下剩余数据不确定,计算机试图播放 VCD 数据我们如果观测图像整体含义(而非你说的具体二进制数据)由于色块的存在导致图像中部分意义(比如色块遮挡了人物手上拿的具体东西)变得模糊,可能根据场景推测人物手里可能拿着不太大的圆形东西,但是由于色块存在已经分辨不出是什么了
    PureWhiteWu
        15
    PureWhiteWu  
       2018-09-04 14:18:07 +08:00
    @listnodeptr 我的意思是,计算机并没有做这些和“模糊”相关的,这个是由我们人去做的。计算机只是真是地将 VCD 上的数据展示出来而已。
    题目问的是计算机可不可以,而不是人可不可以。
    atozj
        16
    atozj  
       2018-09-04 14:18:47 +08:00 via iPhone
    稀疏记忆算法?
    lzhd24
        17
    lzhd24  
       2018-09-04 14:22:49 +08:00 via Android
    游戏里可以设置吧,头号玩家那种。
    linthieda
        18
    linthieda  
       2018-09-04 14:23:06 +08:00 via Android
    如果一个 nn graph 在从一个 node 到另一个 node 时的 path 有很多个而且 nondeterministic,那么很可能就类似于一个模糊的运算。 同理, 如果一个 graph 中有大量 non derministic recurrent/recursive node, 可能就类似于模糊记忆。 一句话总结:上述的 graph 现在的算力完全 train 不动
    takato
        19
    takato  
       2018-09-04 14:26:47 +08:00
    模糊记忆的本质就是局部"精确破坏"构成的集合
    3rdFaust
        20
    3rdFaust  
       2018-09-04 14:29:48 +08:00
    总觉得你再说现在大火的统计型 AI
    dawn009
        21
    dawn009  
       2018-09-04 14:38:58 +08:00
    @PureWhiteWu #15 读取到的一段数据 IO 校验失败,说明已损坏。再次尝试读取,读取到的内容仍然校验失败,但和上一次有所不同。这段数据究竟是 000110 呢,还是 100101 呢?这是一段模糊的数据
    newtype0092
        22
    newtype0092  
       2018-09-04 14:39:20 +08:00
    相当于一个搜索算法吧,记忆中的儿时玩伴是一个对象,假设里面有姓、名、性别、年龄、样貌等等,都存在一个图里。
    当你回想的时候,就是从一个点开始联想(搜索),假设先搜到“姓=马”,然后搜到“名长度=2 ”,然后“名[1]=梅”,这时候你不知道“名[0]”,就只是想起,我有个玩伴叫马什么梅?
    想到一半头疼放弃,这是内存不够溢出了。
    想到一半有别的事干扰,这是 cpu 被抢占了。
    想很久没有结果,这是任务执行超时了。
    记不起来具体是 a 还是 b,这是有脏数据不一致了。
    这些都算模糊记忆吧。
    menc
        23
    menc  
       2018-09-04 14:42:25 +08:00
    来看看 GAN,一种神经网络,对“人脸”这个概念的认识就是模糊的
    menc
        24
    menc  
       2018-09-04 14:44:24 +08:00
    @menc ls 这个图像不像梦里的图?局部清晰,局部模糊,能看出大概模样,却又不完全真切。这就是模型生成的人脸,代表了模型对人脸的理解。

    GAN 就是连续的而非离散的。
    rogwan
        25
    rogwan  
       2018-09-04 15:00:49 +08:00 via Android
    人脑是怎么实现记忆的?学界已经搞清楚了吗
    daocheng
        26
    daocheng  
       2018-09-04 15:12:00 +08:00
    推荐一本书《生命 3.0 》,里面的内容可能会有启发,我也正在读
    vincenteof
        27
    vincenteof  
       2018-09-04 16:31:03 +08:00
    如果你能形式化地定义出·模糊·,那基本上就可以
    PureWhiteWu
        28
    PureWhiteWu  
       2018-09-04 17:10:25 +08:00
    @dawn009 不会是这样的,因为根本不存在校验,VCD 不支持数据校验,你可以先去了解一下底层的存储。读出来是什么数据,就会播放什么数据,不存在这次读出来是 10011 下一次读出来是 01010 的可能性,除非又遭到了损坏,而且计算机不会去重新读的,读出来是什么就播放什么,你之所以看到画面是花的,就是因为读出来的数据是混乱的错误的数据,但是计算机是不知道究竟是对是错的。
    所以你的这个例子不正确,计算机不支持“模糊”。
    你如果学过编译原理也应该知道,计算机所使用的任何一门语言都不能有二义性,否则就是不合规的。
    从计算机最最最底层的,物理层面上来说,二进制不支持模糊。
    除非是薛定谔的电位。
    zdnyp
        29
    zdnyp  
       2018-09-04 17:48:23 +08:00
    应该不存在“模糊记忆”,但是可以模糊的找回记忆(模糊检索)。
    winglight2016
        30
    winglight2016  
       2018-09-04 18:17:43 +08:00
    加权 lstm+dropout,比较接近模糊记忆这个概念了,不过只是模拟,大脑真正是怎么运转的,谁也说不清
    Morriaty
        31
    Morriaty  
    OP
       2018-09-04 18:17:47 +08:00
    @newtype0092 #22 还是有点不一样,对于计算机来说,要么同时找到“马冬梅、马春梅”,要么找到 null,而对于人来说,就停在“马什么梅”?
    jfdnet
        32
    jfdnet  
       2018-09-04 19:01:28 +08:00
    刚刚看了几集 西部世界 好像一开始说的就是这个
    mmy1043
        33
    mmy1043  
       2018-09-04 19:50:17 +08:00 via Android
    不知道楼主为什么要模拟模糊记忆,只提供一个想法吧。人的记忆中不经常被使用的内容会逐渐模糊甚至遗忘,但它们并没有消失,当你遇到一些特定的场景时能够再次回忆起那些记忆。因此可以为每一个信息设置一个权重,根据信息的调用次数来调整它,当权重过低是,对相应信息进行压缩,并留下一些特征,这样来模拟模糊记忆。
    newtype0092
        34
    newtype0092  
       2018-09-04 22:00:32 +08:00   ❤️ 1
    @Morriaty #31 并不是,你可能没看懂我说的,名字的三个字并不是存在同一块内存,找到一个就都找到了,他们之间的关系可能通过很复杂的路径连通,或者根本就不连通,需要通过别的节点才能找到。
    假如搜索到名字的第二个字要 5s,搜索到第三个字要 n 天,你能保证计算机一直跑这个任务跑三天么?而且如果提前不知道 3 天能跑出来,只知道遍历一遍全量数据要好几年,你能一直等它遍历完么?
    这还是内存够的情况下,如果不够那还需要调整算法使用其他辅助手段(类似边想边把线索记到小本本上)。
    归根揭底人的记忆就是类似网络的,你能记不起来名字中的某个字,就说明这些字不是存储在一起的,每个独立的数据都是通过其他的数据线索串联起来。
    比如姓马这个数据,就可以是通过多条不同的路径搜索到的
    (小时候开学那天全班自我介绍->她嗓门很大->她大声的说我叫马 XX )
    (她长得很有特点->她脸很长->她正巧姓马)
    路径可短可长,每个数据的关系可远可近,所以不存在要么找到完整名字,要么找到 null。
    widewing
        35
    widewing  
       2018-09-04 22:19:21 +08:00 via Android
    有啊,各种有损压缩算法了解一下,特别是基于深度网络的
    innoink
        36
    innoink  
       2018-09-04 22:22:05 +08:00 via Android
    多种结果的概率叠加=模糊
    flyaway
        37
    flyaway  
       2018-09-04 22:32:47 +08:00   ❤️ 1
    神经网络大神 Hinton 在 30 多年前的一篇长文中就有过关于模糊记忆的论述。基本思想就是所有的记忆都是存储在一堆 units 中的,任何记忆的实体都可以表示为一些特殊 unit 被激活(一种 pattern),不同记忆个体之间会有重叠的 units,这样就能模拟楼主所说的模糊记忆了。因为当一个新的实体被激活,其本质就是一堆 unit 被激活,这些 unit 可能又是其他实体的组成部分,这样就能发生「联想」记忆。从机器学习角度来说,这种模型天生就具有泛化性。但是我不确定人脑是否是采用同样的过程的。
    Hinton 的文章在这里: http://web.stanford.edu/~jlmcc/papers/PDP/Volume%201/Chap3_PDP86.pdf
    有兴趣的话可以看看。

    顺便说一句,现在 NLP 中流行的 word embedding(将词表示成向量)就是基于 Hinton 的这篇文章的,几乎所有最前沿的模型都会用到 word embedding,大神的文章 30 年后依然有很强的建设性!
    Cheez
        38
    Cheez  
       2018-09-04 22:35:31 +08:00 via Android
    当初因为人脑容量太小而已....相当于数据恢复。
    dawn009
        39
    dawn009  
       2018-09-05 01:26:46 +08:00
    @PureWhiteWu 这个是你不了解了。VCD 卡盘常见吧,特别是用电脑播放 VCD 时。当年「超强纠错(其实是容错,跳过校验)」可是 VCD 机和 VCD 播放软件的主打广告语。

    物理介质不是不「支持」模糊,反而恰恰因为容易出错,所以会有校验机制。换句话说,存储介质天生是「模糊」的,硬件和底层软件的设计需要能消除存储介质的不确定性,才能让上层软件跑在一个「确定」的系统之上。

    特别强调一句,同一块数据,每次读取的值不一样,是个常见的现象。尤其是软盘、光盘等易受干扰的介质。
    dartabe
        40
    dartabe  
       2018-09-05 01:37:46 +08:00
    LSTM 有个记忆单元 会丢弃一些不想记住的东西
    msg7086
        41
    msg7086  
       2018-09-05 05:33:20 +08:00
    @dawn009 取值不一样但计算机仍然只能取到 0 或者 1,从结果上来看是明确的。读取值分为正确和错误,而不是模糊。虽然光头能读到中间值,但是回传出接口的不会是中间值。某个比特位是不可能读出 0.3 这样的值的。同样你的硬盘里存储的视频也不可能是模糊值。你从硬盘上读一个字节,硬盘读出 8 个 1bit 位,组成一个字节,而不是读出像是 [0.3,0.2,0.9,0.8] 这样的东西。
    binux
        42
    binux  
       2018-09-05 05:42:38 +08:00
    @msg7086 #41 只能取到 0 或者 1 是人给计算机定的,计算机给你读个 0.3 你乐意吗?
    msg7086
        43
    msg7086  
       2018-09-05 05:50:44 +08:00
    @binux 这个回复有点莫名其妙啊。
    我需要他返回 0 和 1 的时候返回 0 和 1,我需要他返回模糊数据的时候返回模糊数据啊。
    乐意不乐意管我啥事,难道不是光驱电路板乐不乐意?又不是我眼睛上装个激光头在读 VCD。
    binux
        44
    binux  
       2018-09-05 07:26:21 +08:00
    @msg7086 #43 对啊,是你需要他返回 0 和 1,而不是他不能返回模糊数据。说明「计算机可以模拟“模糊的记忆”」。
    dawn009
        45
    dawn009  
       2018-09-05 07:39:28 +08:00
    @msg7086
    读取损坏的介质,对于单个比特无法知道是正确还是错误,只能知道一整块数据是正确还是错误。然而即使知道这一整块数据有错误,也不清楚错了多少、错在哪个位置。这一整块数据,每次读出来的值不一样,它自然不是确定的。如果选择其中的某一次读取为结果(比如说,只选第一次的结果,相当于忽略校验),则结果的「明确」只代表人为的选择,不代表数据本身明确。

    另外计算机可以读出中间值来,只不过交给上层时要么舍为 0 要么入为 1。
    baicheng10
        46
    baicheng10  
       2018-09-05 07:53:21 +08:00
    @msg7086 一个 bit 读出来为什么不能是 0.3 ?你这就是钻牛角尖了,总得有个头啊,二进制的原子级别当然是 0 或者 1,抽象出来就是模糊的了。
    liuyanjun0826
        47
    liuyanjun0826  
       2018-09-05 08:01:27 +08:00
    计算机有随机数,比如游戏里面的子弹轨迹就是,只是那种和现实一样的感觉我不喜欢。
    Eoston
        48
    Eoston  
       2018-09-05 09:25:11 +08:00
    模糊不模糊都是人来定义的~~除非计算机可以自己判断,否则对它来说所有的一切斗不过是从磁盘中读出来写进去,并没什么区别
    openbsd
        49
    openbsd  
       2018-09-05 09:48:34 +08:00
    人类记忆的精准度应该是按事情对当事人的刺激程度和次数决定,计算机不存在 /不容易出现此种“误差”吧 ?
    msg7086
        50
    msg7086  
       2018-09-05 10:49:32 +08:00
    @binux 可是我回复的讨论串说的是 VCD 的数字存储信号读取错误被当作「模糊」的问题,并不是在说楼主问题的结论啊?
    msg7086
        51
    msg7086  
       2018-09-05 11:10:55 +08:00
    @dawn009 你说的这个应该属于「不确定」而不是「模糊」吧。

    我举个例子吧。比如说人脑中记忆的一件事,你去了某个活动,来了 8 位嘉宾。过了几个月以后,你的记忆开始模糊,你不记得到底来了几位了,可能来了 5 位,也可能来了 10 位,这叫做记忆模糊。假如一个模拟比特位用来记录人数的多少,假设 1 是来了很多人(比如 50 人),而 0 表示来了很少人(比如 1 人),那么这个值刚开始的时候是记录为比如说 0.2,但是过了几个月以后你的神经元读出了 0.3,这样报道就产生了偏差。但是如果你用 0x08 这样的数字信号来记录,过段时间 bitrot 了,变成了 0x00,来了 0 个人,这就不是记忆模糊的问题了。

    而像 VCD 这样的,属于数字信号,每个最小记录单位就只有 0 和 1,假如 0 是正确的,那么 1 读出来就是完全错误的数据,在转换成计算机整数的时候会变成完全不同的数字(例如 0x4000 被读取成了 0x4080 ),那么之后经过 IDCT 等处理,出来的就是完全错误的内容。

    再同样类比,比如说印刷出的实体照片,经过时间的流逝会逐渐变黄变旧。但是数字照片只会因为一个比特读取错误而导致解码错误,出现花屏等现象。

    再说计算机可以读出中间值的问题。计算机使用的是数字信号,所以单个元素(比特)是没有中间值的,计算机能获取的所谓中间值,一般是用 IEEE754 编码的、使用 0 和 1 信号组成的浮点数,而非真正的模拟比特。计算机的电路本身就是构筑在 0 和 1 之上的。

    之前看过新发现的忆阻器,可以方便地在一个比特中存储模拟值,也就是你可以通过注入电流,让元器件里面存储的数据逐渐变化,比如从 0.1 逐渐加到 0.4。我倒是觉得基于忆阻器的仿生电脑值得期待一下。
    binux
        52
    binux  
       2018-09-05 11:38:21 +08:00
    @msg7086 #51 就拿你 [0.3,0.2,0.9,0.8] 的例子,假如这 4 个 bit 代表 “来了几位嘉宾”,那么它有 0.4032 的概率为 3, 0.1728 的概率为 11,0.1008 的概率为 7。这也是记忆模糊了啊,只能说计算机的模糊和人的模糊不一样,因为你记忆有其他场景做修正,不会出现人数不连续的问题,你给计算机也搞个按范围的校验位,它也能和人类一样模糊啊。
    Mutoo
        53
    Mutoo  
       2018-09-05 11:44:38 +08:00
    游戏 AI 里面有一种应用叫模糊逻辑( FuzzyLogic ),可以让设计师使用“多,比较多,很多”之类的非确定量词来描述规则,然后根据背后的参数最后生成决策。
    msg7086
        54
    msg7086  
       2018-09-05 11:53:16 +08:00
    @binux 不知道是你理解的问题还是我说得不清楚。
    我再重申一次。我说的内容说的是上面 VCD 光盘读取错误被当成模糊的案例。从一开始我就没有说过计算机无法模拟模糊记忆。你从上到下的 3 个回复本质上是在同意我的观点,然而我并没有打算去讨论这个观点,因为过于显而易见了。像 VCD 这样的数字信号,和你#50 里说的按范围校验位完全是两回事,我觉得你的回复完全偏离了我正在回复的那件事了。
    binux
        55
    binux  
       2018-09-05 12:28:32 +08:00
    @msg7086 #54 不,我就是在说 VCD 读取错误可以就是模糊。
    因为在人类记忆模糊情况下,让人类回答一个确定答案(例如考试)时那就是读取错误。
    liuyanjun0826
        56
    liuyanjun0826  
       2018-09-05 12:33:57 +08:00
    @msg7086 VCD 是碟片,是完全有价值的产品。。。。只有我现在打出来的字才是免费的。
    dawn009
        57
    dawn009  
       2018-09-05 14:08:25 +08:00
    @msg7086 原来你想说的是这个啊。那 VCD 的确不是一个完美的例子。楼上有多个以神经网络举的例子更加贴切。

    然而我的回复针对的是 #15 楼 「这个不一样,最终其实还是真实准确的数据,只不过变成了混乱的无意义的数据而已,计算机还是按照 VCD 上的数据进行播放的。」这段描述。损坏的介质读出的并不是真实准确的数据,而是不确定的数据。

    如果你认为这仍然不能算模糊,只有像老照片那样的宏观现象才算模糊,VCD 的确做不到,但其他格式可以。比如一张以交错方式存储的 jpg 图片,把它的其中的某几段数据破坏掉,整张图片只会变模糊,而不会花屏、无法辨认。

    最后,存储介质上的单个比特有中间值,和浮点数完全没关系。一个是介质的物理特性,一个是数据的编码格式。
    磁盘单元上的磁性,不是绝对的非 0 即 1,而是有在[0,1]范围内的强和弱。通过判断这些中间值,可以恢复出已经被复写的磁盘数据。这其实就是删除敏感数据时要求以随机数将相应磁盘单元复写 N 次的原因。
    yuchting
        58
    yuchting  
       2018-09-05 18:31:18 +08:00
    计算机一模糊,程序员就要通宵加班找出来为啥他就模糊了呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3539 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 04:23 · PVG 12:23 · LAX 20:23 · JFK 23:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.