<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Learning Bit by Bit: Extracting the Essence of Machine Learning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sascha Mucke</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nico Piatkowski</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Katharina Morik</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>TU Dortmund, AI Group</institution>
          ,
          <addr-line>Dortmund</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Data mining and Machine Learning research has led to a wide variety of training methods and algorithms for di erent types of models. Many of these methods solve or approximate NP-hard optimization problems at their core, using vastly di erent approaches, some algebraic, others heuristic. This paper demonstrates another way of solving these problems by reducing them to quadratic polynomial optimization problems on binary variables. This class of parametric optimization problems is well-researched and powerful, and o ers a unifying framework for many relevant ML problems that can all be tackled with one e cient solver. Because of the friendly domain of binary values, such a solver lends itself particularly well to hardware acceleration, as we further demonstrate in this paper by evaluating our problem reductions using FPGAs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Hardware acceleration for machine learning usually involves GPU
implementations that can do fast linear algebra to enhance the speed of numerical
computations. Our approach is di erent to GPU programming in that we make use
of a xed class C of parametric optimization problems that we solve directly on
e cient specialized hardware. Solving a problem instance in C thus amounts to
nding the correct parameters and feeding them to the solver.</p>
      <p>
        The underlying idea of using a non-universal compute-architecture for
machine learning is indeed not new: State-of-the-art quantum annealers rely on the
very same principle of parametric problem classes. There, optimization problems
are encoded as potential energy between qubits; the global minimum of a loss
function can be interpreted as the quantum state of lowest energy [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The
fundamentally non-deterministic nature of quantum methods makes the daunting
task of traversing an exponentially large solution space feasible. However, their
practical implementation is a persisting challenge, and the development of actual
quantum hardware is still in its infancy. The latest agship, theD-Wave 2000Q,
Copyright c 2019 for this paper by its authors. Use permitted under Creative
Commons License Attribution 4.0 International (CC BY 4.0).
can handle problems with 641 fully connected bits, which is by far not su cient
for realistic problem sizes.
      </p>
      <p>Nevertheless, the particular class of optimization problems that quantum
annealers can solve is well understood which motivates its use for hardware
accelerators outside of the quantum world.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Boolean Optimization</title>
      <p>
        A pseudo-Boolean function (PBF) is any function f : Bn 7! R that assigns a
real value to a xed-length binary vector. Every PBF on n binary variables can
be uniquely expressed as a polynomial of some degree d n with real-valued
coe cients [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Quadratic Unconstrained Binary Optimization (QUBO) is the
problem of nding an assignment x of n binary variables that is minimal with
respect to a Boolean polynomial of degree 2:
where i and i0j are real-valued parameters that are xed for a given problem
instance. As x x = x for all x 2 B, the linear coe cients i can be integrated
into the quadratic parameters i0i by setting ii = i0i + i, which makes for a
simpler formula and leaves us with a perfect lower triangle matrix for :
(1)
(2)
n i
X X
      </p>
      <p>
        It has been shown that all higher-degree pseudo-Boolean optimization
problems can be reduced to quadratic problems [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. For this reason a variety of
wellknown optimization problems like (Max-)3SAT and prime factorization, but also
ML-related problems like clustering, maximum-a-posterior (MAP) estimation in
Markov Random Fields, and binary constrained SVM learning can be reduced
to QUBO or its Ising variety (where x 2 f 1; +1gn).
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Evolutionary QUBO Solver</title>
      <p>If no specialized algorithm is known for a particular hard combinatorial
optimization problem, randomized search heuristics, like simulated annealing or
evolutionary algorithms (EA), provide a generic way to generate good solutions.</p>
      <p>
        Inspired by biological evolution, EAs employ recombination or mutation on a
set of \parent" solutions to produce a set of \o spring" solutions. A loss function,
also called tness function in the EA-context, is used to select those solutions
which will constitute the next parent generation. This process is repeated until
convergence or a pre-speci ed time-budget is exhausted [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
1 https://www.dwavesys.com/sites/default/files/mwj_dwave_qubits2018.pdf
      </p>
      <p>Motivated by the inherently parallel nature of digital circuits, we developed
a highly customizable ( + )-EA FPGA hardware architecture implemented
in VHDL. Here, customizable implies that di erent types and sizes of FPGA
hardware can be used.</p>
      <p>Moreover, our hardware synthesizer allows the end-user to customize the
maximal problem dimension n, the number of parent solutions , the number
of o spring solutions , and the number of bits per coe cient ij . In case of
low-budget FPGA, this allows us to either allocate more FPGA resources for
parallel computation ( and ) or for the problem size (n and ).</p>
      <p>We used this hardware optimizer for evaluating the QUBO and Ising model
embeddings we are going to present in the following sections.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Exemplary Learning Tasks</title>
      <p>With an e cient solver for QUBO and the Ising model at hand, solving a speci c
optimization problem reduces to nding an e cient embedding into the domain
of n-dimensional binary vectors and devising a method for calculating such
that the minimizing vector x corresponds to an optimal solution of the original
problem. The actual optimization step then amounts to uploading to the
hardware solver which approximates a global optimum that yields an approximately
optimal solution to the original problem, once decoded back into the original
domain. As we will show, it is possible for multiple valid embeddings to exist for
the same problem class, but their e ectiveness di ers from instance to instance.
4.1</p>
      <sec id="sec-4-1">
        <title>Clustering</title>
        <p>
          A prototypical data mining problem is k-means clustering which is already
NPhard for k = 2. To derive the coe cients for an Ising model solving the
2-means clustering problem, we can use the method devised in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], where each
binary variable i 2 f+1; 1g indicates whether a corresponding data point
xi 2 D belongs to cluster +1 or cluster 1 { the problem dimension is thus
n = jDj.
        </p>
        <p>First, we assume that D has zero mean, such that Pi xi = 0. Next, we
compute the Gramian matrix G, where every entry corresponds to an inner
product of two data points:</p>
        <p>
          Gij = hxi; xj i
As shown in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], minimizing an Ising model using G as coupling matrix
corresponds to maximizing the between cluster scatter under the assumption that the
clusters are approximately of equal size. Optionally a kernel function can be used
instead of the inner product, and the resulting kernel matrix can be centered to
maintain the zero mean property in the resulting feature space.
        </p>
        <p>For simplicity we will stick to the linear kernel and assume that G is already
centered. As our hardware optimizer encodes as signed b-bit integers (with
b 32), we have to round the entries of G, which are real-valued. To minimize
loss of precision, we scale the parameters to use the full range of b bits before
rounding. As the overall objective function is a linear combination of , scaling
all coe cients by is the same as multiplying the objective function by , which
means that the position of the optimum is una ected. The nal formula for a
single coe cient comes out to
ij = b Gij + 0:5c with
=
Notice that there is no practical di erence in precision between integer and
xed-point representation, as the latter is nothing more than a scaled integer
representation to begin with.</p>
        <p>Exemplary optimization results using this method on the UCI datasets Iris
and Sonar are shown in Fig. 1.</p>
        <p>20
40
60
80
100
20
40
60
80
100</p>
        <p>Time (ms)
200
400</p>
        <p>
          600
Time (ms)
800
1000
200
400
600
800
1000
A linear Support Vector Machine (SVM) is a classi er that { in the simplest
case { takes a labeled dataset D = f(xi; yi) j 1 i ng X Y of two classes
(Y = f+1; 1g) and tries to separate them with a hyperplane [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. As there may
be in nitely many such hyperplanes, an additional objective is to maximize the
margin, which is the area around the hyperplane containing no data points, in an
attempt to obtain best generalization. The hyperplane is represented as a normal
vector w and an o set b. To ensure correctness the optimization is subject to the
requirement that every data point be classi ed correctly, i.e. every data point
lies on the correct side of the plane:
(hw; xii
b) yi
1
        </p>
        <p>As for real-world data perfect linear separability is unlikely, each data point
is assigned a slack variable i such that i &gt; 0 indicates that xi violates the
correctness condition. This yields the second objective, which is to minimize the
total slack, so that the entire minimization problem comes out to be
minimize 12 kwk22 + C X i
s.t. 8i: (hw; xii
i
b) yi
1
i</p>
        <p>The optimization is done by adjusting w, b and i, while C is a free parameter
controlling the impact of wrong classi cation on the total loss value. In fact, C
is nothing more than an inverse regularization factor, as the loss function can
be rewritten as Pi i + kwk22, which illustrates that SVM learning is merely
a regularized hinge loss minimization. Typically this problem is solved using its
Lagrange dual, which is</p>
        <p>n
maximize X</p>
        <p>i
i=1
s.t. 8i: 0</p>
        <p>n n
1 X X
2</p>
        <p>Note that eq. (3) has striking similarity to eq. (1), the QUBO objective
function, only a) it is a maximization instead of a minimization problem, b)
index j goes from 1 to n instead to i, which makes for a full matrix instead
of a lower triangle matrix, and c) i is continuous between 0 and C instead
of a boolean. Points a) and b) are easy to deal with by ipping the sign and
multiplying all entries except for the main diagonal of the triangle matrix by 2.
Point c) requires a radical simpli cation: Instead of a continuous i 2 [0; C] we
assume that i is either 0 or C, reducing it to a boolean indicator whether xi
is a support vector or not. Thus we can substitute i for C zi with zi 2 B and
end up with the following QUBO formulation:
n
X
i=1</p>
        <p>n 0i 1 1</p>
        <p>Czi + Xi=1 @Xj=1 C2tij zizj + 12 C2tiiziA
where tij = yiyj hxi; xj i
In terms of eq. (2) we can express
ij =
( 1 C2tii
2
C2tij
as
C
if i = j
otherwise</p>
      </sec>
      <sec id="sec-4-2">
        <title>Markov Random Field</title>
        <p>
          Another typical NP-hard ML problem is to determine the most likely con
guration of variables in a Markov Random Field, known as the MAP prediction
problem [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Given the weight parameters uv=xy 2 Z of an MRF with graphical
structure G = (V; E) and variables (Xv)v2V from nite state spaces (Xv)v2V , we
demonstrate two di erent QUBO encodings to maximize the joint probability
over all possible variable assignments. These two encodings ultimately have the
same objective, but lead to signi cantly di erent runtimes on our optimizer
hardware, depending on the given MRF's structure. We assume to be integer-valued
to t our optimizer's architecture, and also because integer MRF's have been
shown to be generally well-performing alternatives to MRFs with real-valued
weights, especially when resources are constrained [
          <xref ref-type="bibr" rid="ref6 ref7">7, 6</xref>
          ].
        </p>
        <p>For the rst QUBO embedding of the MAP problem we encode the
assignments of all Xv as a concatenation of one-hot vectors
(X1 = xi11 ; : : : ; Xm = ximm ) 7!
0 : : : 010 : : : 0 : : : 0 : : : 010 : : : 0;
| {z } | {z }
jX1j jXmj
where m = jV j and xik is the i-th value in Xk. The QUBO problem dimension
is equal to the total number of variable states, n = Pv2V jXvj. The weights
are encoded into the quadratic coe cients: Let : V X 7! N be a helper
function that, given a vertex and variable state, returns the corresponding bit
index within the concatenated one-hot vector. Given two indices i = (u; x) and
j = (v; y) with u 6= v, the corresponding coe cient is ij = uv=xy; the
negative sign turns MAP into a minimization problem. If u = v and i 6= j, the
indices belong to the one-hot encoding of the same variable; as a variable can
only be in one state at a time, these two bits cannot both be 1, as this would lead
to an invalid one-hot encoding. Therefore the corresponding coe cient must be
set to an arbitrary positive penalty value P , large enough to ensure that
even the worst valid encoding has a lower loss value than P . On the other hand,
if i = j then ij = 0, because the variable assignments have no weights on their
own.</p>
        <p>ij =
80
&gt;
&lt;</p>
        <p>P
&gt;
:
where i = (u; x);
j = (v; y)
uv=xy
if i = j
if i 6= j and u = v
otherwise</p>
        <p>The dimension can be reduced by removing bits with index i where all ij
are either 0 or P for all j i, as those can never be part of an optimal solution.</p>
        <p>For a di erent QUBO embedding, we may assign bits zuv=xy to all non-zero
weights uv=xy between speci c values x and y of two variables Xu and Xv,
indicating that Xu = x and Xv = y (see g. 2). Again, to avoid multiple or
con icting variable assignments we introduce penalty weights between pairs of
edges that share a variable but disagree in its speci c value (see g. 3).</p>
        <p>The result z of the optimization is a vector of indicators for \active" edges
indexed by the set of all non-zero weights , from which we can derive an
assignment for every variable, provided it has at least one incident edge of non-zero
weight:</p>
        <p>Xv = [fy~ j u 2 V nfvg; u 2 Xu; y~ 2 Xv; zuv=xy~ = 1g
For a valid encoding, the above set is always a singleton, such that its union
yields the contained element.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Evaluation</title>
      <p>We evaluated our embeddings using our optimizer hardware on multiple UCI
datasets.</p>
      <p>
        For 2-means clustering we took ve datasets and compared the resulting
k-means loss values of the Ising model embedding to Lloyd's algorithm [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] as
implemented by R's kmeans method2. For calculating we chose the simplest
case of a linear kernel. The results are listed in table 1; the resulting clusterings
2 https://stat.ethz.ch/R-manual/R-patched/library/stats/html/kmeans.html
are similar to those obtained through Lloyd's algorithm, though our loss values
were mostly slightly higher. Our values seem to be better the higher the data
dimension d is, surpassing Lloyd's algorithm on Sonar containing 60 numerical
variables per data point. We assume that the generally slightly higher loss values
are due to the simplifying assumption that the clusters are about equal in size,
not due to insu cient convergence of our optimizer, as we found that we reached
identical optima in every run, leading to a standard deviation of 0 for every loss
value. Convergence plots of our hardware optimizer for two exemplary datasets
are shown in g. 4.
      </p>
      <p>The SVM embedding was tested extensively on the Sonar dataset, where
we created ten random splits of 2=3 training data and 1=3 test data. Using our
hardware optimizer, we then trained the binary SVM on each test set of each
split with C = 10k for k 2 f 3; 2; 1; 0; 1; 2g and calculated the accuracy
on the respective test set; see table 2 for the full results. For C = 10 3, our
optimizer found the optimum z = 1, which means that every data point was
a support vector. For bigger C the number of support vectors decreased, until
for C = 102 the optimum was z = 0, which is why 102 is missing from the
table, as w and b could not be calculated without at least one support vector.
The best accuracy was achieved with C = 1 and came out to be about 75%. On
the same splits we trained a conventional SVM (libsvm using the svm method
from R's e1071 package3) and found that the test accuracies were in fact very
similar, the di erence being less than one percent on average (see table 3), which
is a promising result considering the radical simpli cation steps taken for this
model.</p>
      <p>The two MRF embeddings were tested on the Sonar and Mushroom datasets,
using weights from pre-trained integer MRFs with Chow-Liu tree structures.
Let j j denote the number of non-zero weights of a trained MRF: While the
MRF on Sonar had only few non-zero weights (j j = 102), Mushroom yielded a
much more densely connected MRF (j j = 679). Convergence plots for Mushroom
can be seen in g. 5. Obviously the state embedding (where each bit encodes
one variable state as a one-hot vector) is superior on Mushroom, as it converges
much more quickly to a very good optimum, whereas the edge embedding (where
each bit encodes one value from ) takes much longer and does not converge to
3 https://www.rdocumentation.org/packages/e1071/versions/1.7-1/topics/svm
nearly as good an optimum, even after several minutes. On the contrary, the
edge embedding on Sonar is much more e cient than the state embedding (see
g. 6). The di erent convergence rates are due to the di erent QUBO dimensions
of the embeddings: The state embedding on Mushroom has dimension ns =
Pv2V jXvj = 127, which can be further reduced to 107 by removing unnecessary
bits as described in section 4.3. The edge embedding on the other hand leads to
a dimension ne = j j = 679. As our hardware optimizer needed about O(n2) to
perform the optimization, the latter encoding lead to a performance about 40
times slower. The Sonar MRF has ns = 662, which the reduction step improves
signi cantly to 117. As j j = 102 (and ne = 102, consequently) for the Sonar
MRF, the edge embedding is even better, though.</p>
      <p>As a general rule we observe that for relatively dense MRFs, the (reduced)
state encoding leads to faster convergence, while for sparse MRFs with j j &lt;
Pv2V jXv j (where Xv is the set of variable states that have at least one non-zero
associated with them) the edge encoding is preferable.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion and Future Work</title>
      <p>QUBO and Ising models constitute simple but versatile optimization problems
that capture the essence of many problems highly relevant to Machine Learning,
and in this work we have summarized some interesting embeddings of NP-hard
Machine Learning problems into both models. A general hardware-based solver
for either of these models is thus a powerful tool for Machine Learning, and
the domain of bit vectors makes for an e cient problem representation even
when resources are restricted, e.g. in embedded systems. Further we showed
that there can exist multiple embeddings of the same problem that perform
di erently depending on properties of the problem instance.</p>
      <p>It would be interesting to uncover more embeddings of ML problems in the
future, both with conventional hardware acceleration like we did, but also with
the advent of quantum annealing in mind.
κ = 1/n
κ = 2/n
κ = 3/n
κ = 4/n
κ = 5/n
κ = 6/n
κ = 7/n
κ = 8/n
κ = 9/n
κ = 10/n
0</p>
      <p>Acknowledgement This research has been funded by the Federal Ministry
of Education and Research of Germany as part of the competence center for
machine learning ML2R (01jS18038A)</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bauckhage</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ojeda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sifa</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wrobel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Adiabatic quantum computing for kernel k=2 means clustering</article-title>
          .
          <source>In: Proceedings of the LWDA 2018</source>
          . pp.
          <volume>21</volume>
          {
          <issue>32</issue>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Boros</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hammer</surname>
            ,
            <given-names>P.L.</given-names>
          </string-name>
          :
          <article-title>Pseudo-boolean optimization</article-title>
          .
          <source>Discrete applied mathematics 123(1-3)</source>
          ,
          <volume>155</volume>
          {
          <fpage>225</fpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Cortes</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vapnik</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Support vector machine</article-title>
          .
          <source>Machine learning 20(3)</source>
          ,
          <volume>273</volume>
          {
          <fpage>297</fpage>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Kadowaki</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nishimori</surname>
          </string-name>
          , H.:
          <article-title>Quantum annealing in the transverse ising model</article-title>
          .
          <source>Physical Review E</source>
          <volume>58</volume>
          (
          <issue>5</issue>
          ),
          <volume>5355</volume>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Lloyd</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Least squares quantization in pcm</article-title>
          .
          <source>IEEE transactions on information theory 28</source>
          (
          <issue>2</issue>
          ),
          <volume>129</volume>
          {
          <fpage>137</fpage>
          (
          <year>1982</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Piatkowski</surname>
          </string-name>
          , N.:
          <article-title>Exponential families on resource-constrained systems</article-title>
          .
          <source>Ph.D. thesis</source>
          , Technical University of Dortmund, Germany (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Piatkowski</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morik</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Integer undirected graphical models for resourceconstrained systems</article-title>
          .
          <source>Neurocomputing</source>
          <volume>173</volume>
          ,
          <issue>9</issue>
          {
          <fpage>23</fpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Schwefel</surname>
            ,
            <given-names>H.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rudolph</surname>
          </string-name>
          , G.:
          <article-title>Contemporary evolution strategies</article-title>
          .
          <source>In: European conference on arti cial life</source>
          . pp.
          <volume>891</volume>
          {
          <fpage>907</fpage>
          . Springer (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Wainwright</surname>
            ,
            <given-names>M.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jordan</surname>
            ,
            <given-names>M.I.</given-names>
          </string-name>
          , et al.:
          <article-title>Graphical models, exponential families, and variational inference</article-title>
          .
          <source>F+Trends in Machine Learning</source>
          <volume>1</volume>
          (
          <issue>1</issue>
          {2),
          <volume>1</volume>
          {
          <fpage>305</fpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>