Model Free Learning of Channel Codes forContinuous and Discrete Additive Channels

EE376A (Winter 2019)
With the growth of digital communication, achieving the full capability of communication channels grows even more crucial. Modern error correcting codes such as LDPC and Turbo codes provide schemes that help achieve high efficiency over theoretical communication channels, but using them in practice often does not acheive the theoretical results because real-world channels do not have easily describable noise models. Using deep neural network based autoencoders, we present a method for constructing codes even when it is not possible to create an accurate noise model for the channel. To achieve this on discrete channels, which present challenges for deep learning, we combine a channel relaxation scheme to allow for training and a dithered quantization scheme to improve results significantly.
You can read our technical paper here and see our code here.

Outreach

For the outreach event, we demonstrated a simplified version of the problem we aimed to solve with our project. Elementary schoolers were presented with a challenge to “solve” or “decode” an unknown communication channel. In particular, we asked them to send a word over a simulated channel from one computer to another. Prizes were awarded to students who could send a message from one side to the other and have it show a target message (“banana” or “strawberry”) as the corrupted message on the other screen. Because they didn’t know how the channel worked at first, this required some trial and error to see how the channel was corrupting the input. (For simplicity, our channel was one-to-one.) This is an analogue of the machine learning task we tackled, which used Monte Carlo sampling of unknown channels as one step in learning deep autoencoders to communicate reliably over those channels.

IMG_8942

The channel simulation was implemented as a server in Node JS and physically demonstrated by presenting two computers to the students. Each was connected to the server in Chrome and displayed a webpage with “send message” and “received message” fields. We originally had three options for how the channel would corrupt the codewords, but we settled on using one that simply reversed the codeword for most of the demonstrations, as it was the only one that students could consistently “solve”. We’d consider our demo to be a success!