anchor.diff:  
   If we compare this to the deblurring problem, we see that while the deblurring problem has a local relationship between parameters and data, the radon transform has a global relationship. Here two points on opposite sides of the image can still influence the same datapoint as long as they lie on the same line. And since the forward model is global, so is the inverse problem. This means that classical local machine-learning approaches based on convolutions will not work.
   
  -One way to solve this would be to use fully-connected layers instead of convolutions, but this quickly becomes infeasible. For example, in the example above, a single fully connected layer between data and signal would require a staggering stem:[2.6 \cdot 10^{11}] weights. Storing these in single precision would require one terabyte of data. For a single layer. 
  +One way to solve this would be to use fully-connected layers instead of convolutions, but this quickly becomes infeasible. For example in the example above a single fully connected layer between data and signal would require a staggering stem:[2.6 \cdot 10^{11}] weights. Storing these in single precision would require one terabyte of data. For a single layer. 
   
   This is obviously not a workable solution.
   
   == Learned denoisers
   
  -One of the most obvious solutions to this is to somehow re-cast the problem into an image-to-image problem. The most popular way of doing this is to first perform some initial reconstruction, e.g. https://en.wikipedia.org/wiki/Radon_transform#Radon_inversion_formula[Filtered Back-Projection] (FBP):
  +One of the most obvious solutions to this is to somehow recast the problem to an image-to-image problem. The most popular way of doing this is to first perform some initial reconstruction, e.g. https://en.wikipedia.org/wiki/Radon_transform#Radon_inversion_formula[Filtered Back-Projection] (FBP):
   
  -video::mayo_fbp_animation.mp4[mayo_fbp_animation, height=309, width=700, options="autoplay,loop"]
  +video::mayo_fbp_animation.mp4[mayo_fbp_animation, height=360, width=700, options="autoplay,loop"]
   
  -Once this has been applied, we can use any standard machine-learning approach to "denoise" the initial reconstruction by training a neural network to take the initial reconstruction as input and return the ground truth.
  +Once this is done we can use any standard machine-learning approach to "denoise" the initial reconstruction by training a neural network to take the initial reconstruction as data and return the ground truth.
   
  -Several groups have done this and the results are in fact quite remarkable:
  +Several groups have done this and the results are in fact quite remarkable, http://bioeng.kaist.ac.kr/en/2016/09/01/bispl-were-the-1st-and-2nd-place-winners-of-the-ct-low-dose-grand-challenge/[outperforming previous state of the art methods]:
   
   image:learned_denoiser.png[mayo_data, height=309, width=800]
   
  
positive.code: 
  == Results
  
  If you ask me, the results look quite good and I especially appreciate that the method is able to avoid some artifacts (shown with red arrows) that the denoiser just wasn't able to remove:
  
  image:compare_results_anotated.png[compare_results_anotated, height=700, width=800]
  
  The quantitative results are also quite cool and we outperform learned denoising w.r.t both Peak Signal to Noise Ratio https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio[(PSNR)] and structural similarity index https://en.wikipedia.org/wiki/Structural_similarity[(SSIM)]. The runtime is not too shabby either and we manage to do all of this using only stem:[2\%] of the trainable parameters used for the denoiser.
  
  [width="100%", height="60%", frame="topbot",cols="5,3,2,3,3",options="header"]
  |======================
  
negative.code: 
  == Machine learning for inverse problems
  
  If the forward model is local, such as in deblurring where each datapoint is affected only by a small neighborhood of the parameters, finding the unknown parameters from data using machine learning is at least on a conceptual level straightforward. Simply use any standard convolutional neural network and known pairs stem:[(g, f_{\text{true}})] and train the neural network to map stem:[g] to stem:[f_{\text{true}}].
  
  But what happens when stem:[\mathcal{T}] is more complicated? 
  In Computed Tomography, the parameters stem:[f] is an image of the interior of the patient and the forward model is given by the https://en.wikipedia.org/wiki/Radon_transform[Radon transform] which computes all line integrals of the image:
  