Difference between revisions of "Channel coding theorem"
Adrian Vidal (talk | contribs) |
Adrian Vidal (talk | contribs) |
||
Line 48: | Line 48: | ||
=== Example: repetition code === | === Example: repetition code === | ||
+ | A simple way of error control is to employ repetition. In this scheme, we simply transmit the same symbol multiple times and decode the received sequence by taking the majority vote. For example, if we want to transmit the symbol 'a', we can use the channel 10 times which can possibly result in the sequence 'axaaaasdas', which contains 6 a's, one x, two s's, and one d. The receiver then decides that the transmitted symbol is 'a.' | ||
+ | |||
+ | Is it possible to make mistakes even with repetition? Yes! To see this, let us go back to the binary case and transmit binary symbols over a binary symmetric channel with crossover probability <math>0 < p_e < 1/2<\math>. Let <math>n</math> be the number of channel uses, and for simplicity, let us assume that <math>n</math> is odd so that there is no possiblity of a tie in deciding between 0 and 1 as the transmitted symbol. We will make a decision error at the receiver if and only if the channel flips more than <math>(n-1)/2</math> out of <math>n</math> bits. The probability of this event is given by | ||
+ | |||
+ | <math>P(\hat{X}\ne X) = \sum_{i=\frac{n+1}{2}}^{n} \left(\begin{array}{c}n \\ i\end{array}\right) p_e^{i}(1 - p_e)^{n -i }</math> | ||
+ | |||
+ | Fortunately, we do not need to evaluate this to see that the receiver will decode correctly with high probability. By the asymptotic equipartition property, as long as we have sufficiently large <math>n</math>, the received sequence will be a typical <math>n</math>-sequence. For the BSC, the typical output sequence will consist of roughly <math>np_e</math> errors. Since <math>p_e<1/2</math>, then there are fewer erroneous bits than correct bits for a sufficiently large blocklength. | ||
== Channel coding theorem == | == Channel coding theorem == |
Revision as of 09:54, 27 April 2021
Contents
Channel capacity
Motivation
Formally, a channel is defined as a stochastic system which takes an input random variable and an output random variable with a specified conditional probability distribution, . Ideally, in a data transmission or storage systems, channels are noiseless which means that is completely determined by , which implies that . However, most channels will exhibit some level of randomness and potentially one value may come from more than one value of . Thus, it is desired that the mutual information between and is maximized.
Example
Consider the following ternary-input ternary-output channel with input and output alphabet with the following conditional probability :
0.9 | 0.1 | 0 | |
0.1 | 0.9 | 0 | |
0 | 0 | 1 |
Here, it is clear that may have been due to or . Although we do not have any control over this channel (we cannnot change ), we do have control over , the input distribution. Our goal then is to select an input distribution (transmission strategy) so that the mutual information between the inputs and outputs is maximized. The maximum mutual information obtained in such a manner is defined as the channel capacity. For discrete memoryless channels, we define the channel capacity as
.
In our example, our transmission strategy is to assign probabilities to each input symbol with complete knowledge of the channel . (If we do not know , we need to do some form of channel estimation, which out of our current scope in CoE 161.)
Let us say that this is your first time to do capacity calculations. You see the definition and think that maybe you can guess the right input distribution. After some thought, you came up with three candidate solutions for :
- Always transmit .
- Transmit or with 50-50 probability.
- Transmit all symbols with equal probability, for all .
Checkpoint: Without calculating , argue that the first two transmission schemes are suboptimal.
Channel coding
In noisy channels, and so the mutual information is strictly less than the source entropy. Even if we know the capacity-achieving input distribution, it is always possible to make mistakes if we inspect the channel outputs on a per-symbol basis. In this section, we introduce channel coding and see that by adding redundancy, we can control the probability of error.
Example: repetition code
A simple way of error control is to employ repetition. In this scheme, we simply transmit the same symbol multiple times and decode the received sequence by taking the majority vote. For example, if we want to transmit the symbol 'a', we can use the channel 10 times which can possibly result in the sequence 'axaaaasdas', which contains 6 a's, one x, two s's, and one d. The receiver then decides that the transmitted symbol is 'a.'
Is it possible to make mistakes even with repetition? Yes! To see this, let us go back to the binary case and transmit binary symbols over a binary symmetric channel with crossover probability be the number of channel uses, and for simplicity, let us assume that is odd so that there is no possiblity of a tie in deciding between 0 and 1 as the transmitted symbol. We will make a decision error at the receiver if and only if the channel flips more than out of bits. The probability of this event is given by
Fortunately, we do not need to evaluate this to see that the receiver will decode correctly with high probability. By the asymptotic equipartition property, as long as we have sufficiently large , the received sequence will be a typical -sequence. For the BSC, the typical output sequence will consist of roughly errors. Since , then there are fewer erroneous bits than correct bits for a sufficiently large blocklength.