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

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

  •  
  •   Morriaty · 172 天前 · 4567 次点击
    这是一个创建于 172 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    GAN 就是连续的而非离散的。
        25
    rogwan   172 天前 via Android
    人脑是怎么实现记忆的?学界已经搞清楚了吗
        26
    daocheng   172 天前
    推荐一本书《生命 3.0 》,里面的内容可能会有启发,我也正在读
        27
    vincenteof   171 天前
    如果你能形式化地定义出·模糊·,那基本上就可以
        28
    PureWhiteWu   171 天前
    @dawn009 不会是这样的,因为根本不存在校验,VCD 不支持数据校验,你可以先去了解一下底层的存储。读出来是什么数据,就会播放什么数据,不存在这次读出来是 10011 下一次读出来是 01010 的可能性,除非又遭到了损坏,而且计算机不会去重新读的,读出来是什么就播放什么,你之所以看到画面是花的,就是因为读出来的数据是混乱的错误的数据,但是计算机是不知道究竟是对是错的。
    所以你的这个例子不正确,计算机不支持“模糊”。
    你如果学过编译原理也应该知道,计算机所使用的任何一门语言都不能有二义性,否则就是不合规的。
    从计算机最最最底层的,物理层面上来说,二进制不支持模糊。
    除非是薛定谔的电位。
        29
    zdnyp   171 天前
    应该不存在“模糊记忆”,但是可以模糊的找回记忆(模糊检索)。
        30
    winglight2016   171 天前
    加权 lstm+dropout,比较接近模糊记忆这个概念了,不过只是模拟,大脑真正是怎么运转的,谁也说不清
        31
    Morriaty   171 天前
    @newtype0092 #22 还是有点不一样,对于计算机来说,要么同时找到“马冬梅、马春梅”,要么找到 null,而对于人来说,就停在“马什么梅”?
        32
    jfdnet   171 天前
    刚刚看了几集 西部世界 好像一开始说的就是这个
        33
    mmy1043   171 天前 via Android
    不知道楼主为什么要模拟模糊记忆,只提供一个想法吧。人的记忆中不经常被使用的内容会逐渐模糊甚至遗忘,但它们并没有消失,当你遇到一些特定的场景时能够再次回忆起那些记忆。因此可以为每一个信息设置一个权重,根据信息的调用次数来调整它,当权重过低是,对相应信息进行压缩,并留下一些特征,这样来模拟模糊记忆。
        34
    newtype0092   171 天前   ♥ 1
    @Morriaty #31 并不是,你可能没看懂我说的,名字的三个字并不是存在同一块内存,找到一个就都找到了,他们之间的关系可能通过很复杂的路径连通,或者根本就不连通,需要通过别的节点才能找到。
    假如搜索到名字的第二个字要 5s,搜索到第三个字要 n 天,你能保证计算机一直跑这个任务跑三天么?而且如果提前不知道 3 天能跑出来,只知道遍历一遍全量数据要好几年,你能一直等它遍历完么?
    这还是内存够的情况下,如果不够那还需要调整算法使用其他辅助手段(类似边想边把线索记到小本本上)。
    归根揭底人的记忆就是类似网络的,你能记不起来名字中的某个字,就说明这些字不是存储在一起的,每个独立的数据都是通过其他的数据线索串联起来。
    比如姓马这个数据,就可以是通过多条不同的路径搜索到的
    (小时候开学那天全班自我介绍->她嗓门很大->她大声的说我叫马 XX )
    (她长得很有特点->她脸很长->她正巧姓马)
    路径可短可长,每个数据的关系可远可近,所以不存在要么找到完整名字,要么找到 null。
        35
    widewing   171 天前 via Android
    有啊,各种有损压缩算法了解一下,特别是基于深度网络的
        36
    innoink   171 天前 via Android
    多种结果的概率叠加=模糊
        37
    flyaway   171 天前   ♥ 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 年后依然有很强的建设性!
        38
    Cheez   171 天前 via Android
    当初因为人脑容量太小而已....相当于数据恢复。
        39
    dawn009   171 天前
    @PureWhiteWu 这个是你不了解了。VCD 卡盘常见吧,特别是用电脑播放 VCD 时。当年「超强纠错(其实是容错,跳过校验)」可是 VCD 机和 VCD 播放软件的主打广告语。

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

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

    另外计算机可以读出中间值来,只不过交给上层时要么舍为 0 要么入为 1。
        46
    baicheng10   171 天前
    @msg7086 一个 bit 读出来为什么不能是 0.3 ?你这就是钻牛角尖了,总得有个头啊,二进制的原子级别当然是 0 或者 1,抽象出来就是模糊的了。
        47
    liuyanjun0826   171 天前
    计算机有随机数,比如游戏里面的子弹轨迹就是,只是那种和现实一样的感觉我不喜欢。
        48
    Eoston   171 天前
    模糊不模糊都是人来定义的~~除非计算机可以自己判断,否则对它来说所有的一切斗不过是从磁盘中读出来写进去,并没什么区别
        49
    openbsd   171 天前
    人类记忆的精准度应该是按事情对当事人的刺激程度和次数决定,计算机不存在 /不容易出现此种“误差”吧 ?
        50
    msg7086   171 天前
    @binux 可是我回复的讨论串说的是 VCD 的数字存储信号读取错误被当作「模糊」的问题,并不是在说楼主问题的结论啊?
        51
    msg7086   171 天前
    @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。我倒是觉得基于忆阻器的仿生电脑值得期待一下。
        52
    binux   171 天前
    @msg7086 #51 就拿你 [0.3,0.2,0.9,0.8] 的例子,假如这 4 个 bit 代表 “来了几位嘉宾”,那么它有 0.4032 的概率为 3, 0.1728 的概率为 11,0.1008 的概率为 7。这也是记忆模糊了啊,只能说计算机的模糊和人的模糊不一样,因为你记忆有其他场景做修正,不会出现人数不连续的问题,你给计算机也搞个按范围的校验位,它也能和人类一样模糊啊。
        53
    Mutoo   171 天前
    游戏 AI 里面有一种应用叫模糊逻辑( FuzzyLogic ),可以让设计师使用“多,比较多,很多”之类的非确定量词来描述规则,然后根据背后的参数最后生成决策。
        54
    msg7086   171 天前
    @binux 不知道是你理解的问题还是我说得不清楚。
    我再重申一次。我说的内容说的是上面 VCD 光盘读取错误被当成模糊的案例。从一开始我就没有说过计算机无法模拟模糊记忆。你从上到下的 3 个回复本质上是在同意我的观点,然而我并没有打算去讨论这个观点,因为过于显而易见了。像 VCD 这样的数字信号,和你#50 里说的按范围校验位完全是两回事,我觉得你的回复完全偏离了我正在回复的那件事了。
        55
    binux   171 天前
    @msg7086 #54 不,我就是在说 VCD 读取错误可以就是模糊。
    因为在人类记忆模糊情况下,让人类回答一个确定答案(例如考试)时那就是读取错误。
        56
    liuyanjun0826   171 天前
    @msg7086 VCD 是碟片,是完全有价值的产品。。。。只有我现在打出来的字才是免费的。
        57
    dawn009   171 天前
    @msg7086 原来你想说的是这个啊。那 VCD 的确不是一个完美的例子。楼上有多个以神经网络举的例子更加贴切。

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

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

    最后,存储介质上的单个比特有中间值,和浮点数完全没关系。一个是介质的物理特性,一个是数据的编码格式。
    磁盘单元上的磁性,不是绝对的非 0 即 1,而是有在[0,1]范围内的强和弱。通过判断这些中间值,可以恢复出已经被复写的磁盘数据。这其实就是删除敏感数据时要求以随机数将相应磁盘单元复写 N 次的原因。
        58
    yuchting   170 天前
    计算机一模糊,程序员就要通宵加班找出来为啥他就模糊了呢?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2303 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 08:26 · PVG 16:26 · LAX 00:26 · JFK 03:26
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1