메뉴
HN
Hacker News • 41일 전

Could a computer scientist build a brain?

IMP
5/10
핵심 요약

원문 보기
원문 보기 (영어)
How does a brain wire itself, starting from a single cell, using only the information encoded in a genome? We pose this as an engineering problem: Write a program that a single cell executes to build itself into a brain. The program must be small enough to fit in a genome, and fast enough to finish within developmental time. A computer scientist who knows little about biology quickly realizes why the obvious strategies, which developmental biology has rejected experimentally, fail at scale: The genome is too small to store per-synapse wiring, and axons searching blindly for targets would take too long. These same algorithmic constraints drive the design toward solutions that resemble the developmental strategies organisms actually use. That the same solution structure falls out of scaling limits as out of evolution suggests that features of neural development can be grounded in computational necessity rather than contingency alone. Where earlier thought experiments reached discouraging conclusions about the ability of a biologist to fix a radio 1 , or to understand a microprocessor 2 , the news here is better: The design of the brain may be recoverable, not from taking it apart, but from asking how a genome must specify it in the first place. Suppose we hand a computer scientist the complete wiring diagram of a brain and ask: Write a program that a single cell executes to elaborate itself into this network. The program must fit in a genome-sized instruction set of about 1 gigabyte, and it must halt within a developmental time window of at most about a year. The challenge is that the algorithm must scale: It should work for the 302 neurons of C. elegans , the 10 5 10^{5} 1 0 5 neurons of a fly, the 10 8 10^{8} 1 0 8 neurons of a mouse 3 , and the 10 10 10^{10} 1 0 10 neurons of a human brain 4 (Fig. 1 ). How would someone with no knowledge of developmental biology approach this problem? The computer scientist is, in effect, formalizing a task in the spirit of Turing 5 , von Neumann 6 , Waddington 7 , and Brenner 8 , who all saw the genome as a set of instructions for making an organism rather than a description of one. Formalizing the task helps to identify the algorithmic strategies that are both feasible and tractable. Working through the exercise, we find that strategies that work for a small nervous system hit hard walls as the network grows, and the constraints narrow the field to a small class of solutions. The convergence between theory and experiment informs both directions. For developmental neuroscientists, it formalizes familiar molecular mechanisms as solutions to a well-defined algorithmic problem and picks out which features of those mechanisms are computational necessities and which are free to vary. For theorists, it presents biological development as a system that solves an as-yet-unsolved computational task. Modern machine learning does not yet know how to generate large functional networks from compact descriptions, relying instead on either a large stored weight matrix copied from disk, or a training set that is orders of magnitude larger 9 . The initial zygote contains exactly such a description, and analyzing the developmental process may help inspire new algorithms for artificial systems. The problem and its constraints What does it mean to write a developmental program 10 – 14 ? The computer scientist does not get to place neurons and wire them up from the outside, like an engineer soldering a circuit board. Instead, she must write a set of instructions that go into a single initial cell, and then she walks away. This initial cell divides, and each daughter inherits the same program and runs it independently. Each instance of the program can read only what it can sense locally: its own internal state along with molecular signals from its neighbor cells that are themselves running the same program. The cell performs actions that will build the brain: It divides, migrates, extends growth cones that navigate by reading molecular cues and form synapses upon arrival. The entire construction process is distributed and recursive, since every signal a cell reads was produced by another cell executing the same code. The programmer's sole lever is the instruction set she loads into the genome at the start, along with the cell's initial state. The program needs to yield the correct network while respecting practical constraints. We focus here on two aspects: It needs to be short enough to fit in the genome and finish in a reasonable amount of time. A human brain has n ≈ 10 10 n{\approx}10^{10} n ≈ 1 0 10 neurons, each of which forms connections with as many as m ≈ 10 4 m{\approx}10^{4} m ≈ 1 0 4 targets 15 , for a total of as many as n × m ≈ 10 14 n \times m\approx10^{14} n × m ≈ 1 0 14 connections. The program must satisfy two hard constraints. The information constraint. The instructions for building the brain must ultimately reside in the genome, which contains approximately 3 × 10 9 3 \times 10^{9} 3 × 1 0 9 base pairs 21 . Each base pair represents 2 bits, because there are four nucleotide bases. The total information content of the genome is therefore roughly 6 × 10 9 6 \times 10^{9} 6 × 1 0 9 bits, or about 10 10 10^{10} 1 0 10 bits as a generous upper bound. This bound is generous as it assumes the genome has no redundancies, and that every nucleotide is devoted to brain wiring, leaving nothing for the rest of the organism. Any wiring strategy whose instructions exceed this budget cannot be the one biology uses. The budget does not vary much across species: C. elegans and a human differ by less than two orders of magnitude in genome size but by more than eight in neuron count (Fig. 1 ). Whatever algorithm wires a mammalian brain must scale sub-linearly with the number of neurons. The time constraint. The wiring process must complete within a developmental time window. With a bounded growth rate 25 – 27 , total axon length and developmental time are proportional: A strategy that requires growing too much axon, either transiently or permanently, also takes too long. Any viable strategy must keep both the total axon length and the total developmental time sub-linear in the number of neurons. Our computer scientist will consider three approaches over the next few sections, illustrated in Figs. 2 – 5 . The computer scientist evaluates each approach against the problem constraints, until she finds a strategy that does not violate any. For now, she restricts herself to deterministic, activity-independent processes: Each cell executes its program without feedback from neural activity, and is not subject to noise. Plasticity, in particular, operates on connections that already exist; the problem of getting axons to the right populations in the first place is the first one she considers. Stochasticity and activity-dependent plasticity are discussed briefly in later sections. Strategy 1: the identity approach In his 1974 Turing Award Lecture 28 , Donald Knuth stated that premature optimization is the root of all evil † . Honoring his famous maxim, our computer scientist first pursues the most naive algorithm (Fig. 2 ): Assign every neuron a unique identity label, store in the genome a list of target labels for each neuron, and have each growth cone iterate through its list, navigating to each target and forming a synapse. But how does a growth cone find a cell with a given label? Without any map or spatial structure to exploit, the best a growth cone can do is search systematically, visiting cells until it finds a match. The problem is analogous to finding a book from an unsorted library. On average, a search turns up the right book after going through half the shelves; in the worst case, all of them. The search cost grows in proportion to the size of the collection. With n n n neurons and no navigable structure, a growth cone must extend past up to n n n cells to find one target. The total axon length per target is therefore O ( n ) O(n)
관련 소식