<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def kl_divergence(V_a, V_b):
 """ Calculate Kullback-Leibler distance. Uses the smoothing method described in `Bigi 2003 <http://lvk.cs.msu.su/~bruzz/articles/classification/Using%20Kullback-Leibler%20Distance%20for%20Text%20Categorization.pdf>`_ to facilitate better comparisons between vectors describing wordcounts. Parameters V_a : list V_b : list Returns ------- divergence : float KL divergence. """


    # Find shared features.
    Ndiff = _shared_features(V_a, V_b)

    # aprob and bprob should each sum to 1.0
    aprob = map(lambda v: float(v)/sum(V_a), V_a)
    bprob = map(lambda v: float(v)/sum(V_b), V_b)

    # Smooth according to Bigi 2003.
    aprob, bprob = _smooth(aprob, bprob, Ndiff)

    return sum(map(lambda a, b: (a-b)*log(a/b), aprob, bprob))