comparison thesis/cortex.org @ 536:0b0fef5e817b

more clarification.
author Robert McIntyre <rlm@mit.edu>
date Sun, 27 Apr 2014 20:39:33 -0400
parents 8a5abd51cd4f
children bc5eb476693a
comparison
equal deleted inserted replaced
535:8a5abd51cd4f 536:0b0fef5e817b
2944 (set (some #(% proprio-data) lookups))))) 2944 (set (some #(% proprio-data) lookups)))))
2945 #+end_src 2945 #+end_src
2946 #+end_listing 2946 #+end_listing
2947 2947
2948 #+caption: =longest-thread= finds the longest path of consecutive 2948 #+caption: =longest-thread= finds the longest path of consecutive
2949 #+caption: experiences to explain proprioceptive worm data from 2949 #+caption: past experiences to explain proprioceptive worm data from
2950 #+caption: previous data. Here, the film strip represents the 2950 #+caption: previous data. Here, the film strip represents the
2951 #+caption: creature's previous experience. Sort sequences of 2951 #+caption: creature's previous experience. Sort sequences of
2952 #+caption: memories are spliced together to match the 2952 #+caption: memories are spliced together to match the
2953 #+caption: proprioceptive data. Their carry the other senses 2953 #+caption: proprioceptive data. Their carry the other senses
2954 #+caption: along with them. 2954 #+caption: along with them.
2965 rest period by looping the one second rest chain five times. 2965 rest period by looping the one second rest chain five times.
2966 2966
2967 =longest-thread= takes time proportional to the average number of 2967 =longest-thread= takes time proportional to the average number of
2968 entries in a proprioceptive bin, because for each element in the 2968 entries in a proprioceptive bin, because for each element in the
2969 starting bin it performs a series of set lookups in the preceding 2969 starting bin it performs a series of set lookups in the preceding
2970 bins. If the total history is limited, then this is only a constant 2970 bins. If the total history is limited, then this takes time
2971 multiple times the number of entries in the starting bin. This 2971 proprotional to a only a constant multiple of the number of entries
2972 analysis also applies even if the action requires multiple longest 2972 in the starting bin. This analysis also applies, even if the action
2973 chains -- it's still the average number of entries in a 2973 requires multiple longest chains -- it's still the average number
2974 proprioceptive bin times the desired chain length. Because 2974 of entries in a proprioceptive bin times the desired chain length.
2975 =longest-thread= is so efficient and simple, I can interpret 2975 Because =longest-thread= is so efficient and simple, I can
2976 worm-actions in real time. 2976 interpret worm-actions in real time.
2977 2977
2978 #+caption: Program to calculate empathy by tracing though \Phi-space 2978 #+caption: Program to calculate empathy by tracing though \Phi-space
2979 #+caption: and finding the longest (ie. most coherent) interpretation 2979 #+caption: and finding the longest (ie. most coherent) interpretation
2980 #+caption: of the data. 2980 #+caption: of the data.
2981 #+name: longest-thread 2981 #+name: longest-thread
3013 There is one final piece, which is to replace missing sensory data 3013 There is one final piece, which is to replace missing sensory data
3014 with a best-guess estimate. While I could fill in missing data by 3014 with a best-guess estimate. While I could fill in missing data by
3015 using a gradient over the closest known sensory data points, 3015 using a gradient over the closest known sensory data points,
3016 averages can be misleading. It is certainly possible to create an 3016 averages can be misleading. It is certainly possible to create an
3017 impossible sensory state by averaging two possible sensory states. 3017 impossible sensory state by averaging two possible sensory states.
3018 Therefore, I simply replicate the most recent sensory experience to 3018 For example, consider moving your hand in an arc over your head. If
3019 fill in the gaps. 3019 for some reason you only have the initial and final positions of
3020 this movement in your \Phi-space, averaging them together will
3021 produce the proprioceptive sensation of having your hand /inside/
3022 your head, which is physically impossible to ever experience
3023 (barring motor adaption illusions). Therefore I simply replicate
3024 the most recent sensory experience to fill in the gaps.
3020 3025
3021 #+caption: Fill in blanks in sensory experience by replicating the most 3026 #+caption: Fill in blanks in sensory experience by replicating the most
3022 #+caption: recent experience. 3027 #+caption: recent experience.
3023 #+name: infer-nils 3028 #+name: infer-nils
3024 #+begin_listing clojure 3029 #+begin_listing clojure
3077 :experiences experiences}))) 3082 :experiences experiences})))
3078 @experiences)) 3083 @experiences))
3079 #+end_src 3084 #+end_src
3080 #+end_listing 3085 #+end_listing
3081 3086
3082 #+caption: Use longest thread and a phi-space generated from a short 3087 #+caption: Use =longest-thread= and a \Phi-space generated from a short
3083 #+caption: exercise routine to interpret actions during free play. 3088 #+caption: exercise routine to interpret actions during free play.
3084 #+name: empathy-debug 3089 #+name: empathy-debug
3085 #+begin_listing clojure 3090 #+begin_listing clojure
3086 #+begin_src clojure 3091 #+begin_src clojure
3087 (defn init [] 3092 (defn init []
3100 (cond 3105 (cond
3101 (grand-circle? empathy) (.setText text "Grand Circle") 3106 (grand-circle? empathy) (.setText text "Grand Circle")
3102 (curled? empathy) (.setText text "Curled") 3107 (curled? empathy) (.setText text "Curled")
3103 (wiggling? empathy) (.setText text "Wiggling") 3108 (wiggling? empathy) (.setText text "Wiggling")
3104 (resting? empathy) (.setText text "Resting") 3109 (resting? empathy) (.setText text "Resting")
3105 :else (.setText text "Unknown"))))))) 3110 :else (.setText text "Unknown")))))))
3106 3111
3107 (defn empathy-experiment [record] 3112 (defn empathy-experiment [record]
3108 (.start (worm-world :experience-watch (debug-experience-phi) 3113 (.start (worm-world :experience-watch (debug-experience-phi)
3109 :record record :worm worm*))) 3114 :record record :worm worm*)))
3110 #+end_src 3115 #+end_src
3111 #+end_listing 3116 #+end_listing
3117
3118 These programs create a test for the empathy system. First, the
3119 worm's \Phi-space is generated from a simple motor script. Then the
3120 worm is re-created in an environment almost exactly identical to
3121 the testing environment for the action-predicates, with one major
3122 difference : the only sensory information available to the system
3123 is proprioception. From just the proprioception data and
3124 \Phi-space, =longest-thread= synthesises a complete record the last
3125 300 sensory experiences of the worm. These synthesized experiences
3126 are fed directly into the action predicates =grand-circle?=,
3127 =curled?=, =wiggling?=, and =resting?= from before and their output
3128 is printed to the screen at each frame.
3112 3129
3113 The result of running =empathy-experiment= is that the system is 3130 The result of running =empathy-experiment= is that the system is
3114 generally able to interpret worm actions using the action-predicates 3131 generally able to interpret worm actions using the action-predicates
3115 on simulated sensory data just as well as with actual data. Figure 3132 on simulated sensory data just as well as with actual data. Figure
3116 \ref{empathy-debug-image} was generated using =empathy-experiment=: 3133 \ref{empathy-debug-image} was generated using =empathy-experiment=:
3190 accuracy on manual testing of the worm using =init-interactive= and 3207 accuracy on manual testing of the worm using =init-interactive= and
3191 =test-empathy-accuracy=. The majority of errors are near the 3208 =test-empathy-accuracy=. The majority of errors are near the
3192 boundaries of transitioning from one type of action to another. 3209 boundaries of transitioning from one type of action to another.
3193 During these transitions the exact label for the action is more open 3210 During these transitions the exact label for the action is more open
3194 to interpretation, and disagreement between empathy and experience 3211 to interpretation, and disagreement between empathy and experience
3195 is more excusable. 3212 is essentially irrelevant at this point, giving a practical
3196 3213 identification accuracy of even higher than 95%. When I watch this
3197 ** COMMENT Digression: Learn touch sensor layout through free play 3214 system myself, I generally see no errors in action identification.
3215
3216 ** COMMENT Digression: Learning touch sensor layout through free play
3198 3217
3199 In the previous section I showed how to compute actions in terms of 3218 In the previous section I showed how to compute actions in terms of
3200 body-centered predicates which relied on the average touch 3219 body-centered predicates which relied on the average touch
3201 activation of pre-defined regions of the worm's skin. What if, 3220 activation of pre-defined regions of the worm's skin. What if,
3202 instead of receiving touch pre-grouped into the six faces of each 3221 instead of receiving touch pre-grouped into the six faces of each