[HN Gopher] How to send a real number using a single bit (and so...
       ___________________________________________________________________
        
       How to send a real number using a single bit (and some shared
       randomness)
        
       Author : adunk
       Score  : 36 points
       Date   : 2021-10-31 19:09 UTC (3 hours ago)
        
 (HTM) web link (mybiasedcoin.blogspot.com)
 (TXT) w3m dump (mybiasedcoin.blogspot.com)
        
       | IanCal wrote:
       | I would have naiively thought that you would just send a 1 with a
       | probability equal to the number you want to send.
       | 
       | Is this compared in the post? Some of it went over my head.
        
         | ant6n wrote:
         | The post doesn't put in a lot of effort to be understandable.
        
         | rav wrote:
         | Yes, that is covered in this half paragraph:
         | 
         | > Randomized rounding, where the sender sends 1 with
         | probability x and 0 otherwise, and the receiver uses the
         | received bit X as the estimate x', has the property that E[x']
         | = x. Unbiased estimators are arguably more natural for many
         | estimation problems. Here the measure of performance would be
         | the maximum variance for the estimate over all inputs x, so for
         | randomized rounding the cost is 1/4 (when x = 1/2).
         | 
         | The "cost"/"variance" of 1/4 in the above paragraph is talked
         | about later in the article as the "expected squared error"; the
         | main result is a scheme that has a cost of just 0.04599, which
         | is better than the "send a 1 with a probability x" scheme,
         | which has a cost of 1/4 = 0.25.
        
       | amelius wrote:
       | Or encode the number using timing.
        
         | zitterbewegung wrote:
         | That doesn't work because it requires two clocks that are
         | synchronized .
        
           | amelius wrote:
           | Yes, you need more than just a bit, but that is the case also
           | for the article.
           | 
           | Further, you could send the bit as a pulse, where the pulse-
           | width is proportional to the number.
        
         | Aerroon wrote:
         | The first thing I thought of based on the title was sending at
         | a specific time that then is used as a lookup from something
         | like PI or e.
        
       | londons_explore wrote:
       | I see this as the future of machine learning.
       | 
       | Using a single bit to communicate weight updates during the
       | learning process reduces bandwidth required, and allows highly
       | parallel training.
       | 
       | I suspect in the future we'll even see methods of sub-1-bit
       | weight updates to further decrease bandwidth requirements to keep
       | massive models approximately in sync between distant learning
       | nodes.
        
         | asxd wrote:
         | What would a sub 1-bit weight update look like? I'm having
         | trouble wrapping my head around the concept of (what I assume
         | would be) a fraction of a bit?
        
           | londons_explore wrote:
           | Imagine we have 2 weights we want to update. For each weight,
           | choose a pseudo-random number known by both sender and
           | receiver. If a "1" bit is received, update both weights with
           | the random number. If a zero is received, don't.
           | 
           | After enough iterations, each weight can converge on any
           | value.
        
       | fwip wrote:
       | According to the paper, this is sending an estimate of a real
       | number with a finite number of bits (possibly one). The method
       | aims to reduce worst-case(?) error by relying on preshared state
       | (in this case, the seed to a PRNG).
        
       | wk_end wrote:
       | What are some real-world situations where you can only send a
       | single bit but have shared randomness? That seems like a bizarre
       | constraint. Is this just - and no shame in this - math for math's
       | sake?
        
       | Gormisdomai wrote:
       | What is "shared randomness" in the context of this article? When
       | I google it I find papers on quantum computing - is that a
       | prerequisite for this implementation?
        
       | bjornsing wrote:
       | I hate these articles that jump straight into some complex
       | solution without stating the problem clearly... If the problem
       | really is to send a real number using a single bit (and some
       | shared randomness) then clearly that's just impossible. Next!
        
         | asxd wrote:
         | The problem is a variation of that, which makes it possible, as
         | explained in the post. The large caveat is that the accuracy is
         | probabilistic, and it's expected that the receiver is getting
         | many 1-bit from various sensors that are all measuring the same
         | phenomena.
         | 
         | It's a bit like the concept of dithering in images, where
         | visually we can represent shades of grays just by using many 1
         | bit pixels.
        
           | oh_my_goodness wrote:
           | Yes, it's a variation on the problem ... but sending many
           | bits to the receiver is a really significant variation on
           | just sending one bit.
           | 
           | I'm not sure whether so many people would be intrigued to
           | read "How to send a real number using arbitrarily many bits."
        
             | asxd wrote:
             | I think the motivation here is still compression. You know
             | you're going to have a bunch of input values coming in, and
             | this is about how to minimize the size of each value. So
             | the overall throughput required does go down in the end.
        
       | ch33zer wrote:
       | Only tangentially related, but practically how does one only send
       | a single bit of data to a server? If you have a tcp or udp
       | connection then each send is actually a much larger packet.
       | Common rpc frameworks like protobuf also encode a single bit
       | message to a larger structure. I'm sure there's a way, I just
       | can't come up with it.
        
         | lcampbell wrote:
         | Anything over a network is going to have layer 2 framing
         | overhead. Something like a serial port would do the trick.
        
         | sesuximo wrote:
         | Some cpus have general purpose IO pins. You could connect wires
         | to those and send whatever signal you want.
        
         | gpderetta wrote:
         | Serial ports.
        
         | kupopuffs wrote:
         | Read a byte, only examine the first bit. Ignore the rest
        
       ___________________________________________________________________
       (page generated 2021-10-31 23:00 UTC)