<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">CS</journal-id><journal-title-group><journal-title>Circuits and Systems</journal-title></journal-title-group><issn pub-type="epub">2153-1285</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/cs.2016.79185</article-id><article-id pub-id-type="publisher-id">CS-68086</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject><subject> Engineering</subject><subject> Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  FPGA Implementation of a Scalable and Highly Parallel Architecture for Restricted Boltzmann Machines
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Kodai</surname><given-names>Ueyoshi</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Takao</surname><given-names>Marukame</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Tetsuya</surname><given-names>Asai</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Masato</surname><given-names>Motomura</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Alexandre</surname><given-names>Schmid</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib></contrib-group><aff id="aff2"><addr-line>Swiss Federal Institute of Technology, Lausanne, Switzerland</addr-line></aff><aff id="aff1"><addr-line>Graduate School of Information Science and Technology, Hokkaido University, Sapporo, Japan</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>ueyoshi@lalsie.ist.hokudai.ac.jp(KU)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>05</day><month>07</month><year>2016</year></pub-date><volume>07</volume><issue>09</issue><fpage>2132</fpage><lpage>2141</lpage><history><date date-type="received"><day>11</day>	<month>April</month>	<year>2016</year></date><date date-type="rev-recd"><day>accepted</day>	<month>5</month>	<year>May</year>	</date><date date-type="accepted"><day>8</day>	<month>July</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  Restricted Boltzmann Machines (RBMs) are an effective model for machine learning; however, they require a significant amount of processing time. In this study, we propose a highly parallel, highly flexible architecture that combines small and completely parallel RBMs. This proposal addresses problems associated with calculation speed and exponential increases in circuit scale. We show that this architecture can optionally respond to the trade-offs between these two problems. Furthermore, our FPGA implementation performs at a 134 times processing speed up factor with respect to a conventional CPU.
 
</p></abstract><kwd-group><kwd>Deep Learning</kwd><kwd> Restricted Boltzmann Machines (RBMs)</kwd><kwd> FPGA</kwd><kwd> Acceleration</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Restricted Boltzmann Machines (RBMs) are an important component of Deep Belief Networks (DBNs). Moreover, DBNs have achieved high-quality results in many pattern recognition applications [<xref ref-type="bibr" rid="scirp.68086-ref1">1</xref>] - [<xref ref-type="bibr" rid="scirp.68086-ref3">3</xref>] . Therefore, many researchers are actively studying them, and further development is expected. However, as RBM scale increases, the amount of required processing also exponentially increases. As a result, calculations on a conventional CPU require a significant amount of time, which contributes to limited efficiency. Following this observation, the processing speed can be increased using specific hardware circuits. To achieve this goal, various RBM architectures have been proposed. Kim et al. [<xref ref-type="bibr" rid="scirp.68086-ref4">4</xref>] have proposed an architecture supporting large-scale RBMs suitable for implementation on multiple field-programmable gate arrays (FPGAs), and Ly and Chow [<xref ref-type="bibr" rid="scirp.68086-ref5">5</xref>] proposed a reconfigurable architecture suitable for implementation on single or multiple FPGAs.</p><p>However, these architectures do not fully exploit the high parallelism of the neural networks, because each layer is processed sequentially. Higher parallelism requires a substantial circuit scaling, resulting in a trade-off between calculation speed and circuit scale. Therefore, we focus on high parallelism in this study. Furthermore, to address this trade-off, a high scalability is required, which must be optimally designed to satisfy the requirements of the designers.</p><p>In this study, we have devised an architecture that divides RBMs into blocks, to prevent exponential circuit scale increases and sequential calculations with respect to the number of blocks. Each RBM block can perform completely parallel calculations. The trade-off according to the circuit scale of each block has been verified in the following.</p><p>Section 2 describes the RBM algorithm. Section 3 explains the architecture proposed in this study. Section 4 studies the necessary bit precision of our architecture. Section 5 shows the register-transfer level (RTL) simulation results and FPGA implementation results. Section 6 provides our conclusions.</p></sec><sec id="s2"><title>2. Restricted Boltzmann Machines</title><p>RBMs are a stochastic neural network model consisting of two layers (a visible layer and a hidden layer). As shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>, it is an undirected graph model in which the neurons in one layer are fully connected to the neurons in a second layer. RBMs are configured from three parameters, i.e, the connection weights, visible biases, and hidden biases. RBMs learn in an unsupervised process, as they are updated.</p><p>Different pairwise potential functions [<xref ref-type="bibr" rid="scirp.68086-ref6">6</xref>] - [<xref ref-type="bibr" rid="scirp.68086-ref9">9</xref>] determine various types of RBMs. In this study, we use the binary RBMs which are the most fundamental and common type of RBMs [<xref ref-type="bibr" rid="scirp.68086-ref6">6</xref>] [<xref ref-type="bibr" rid="scirp.68086-ref9">9</xref>] . Hidden and visible nodes are binary. The joint distribution obeys the following model:</p><disp-formula id="scirp.68086-formula566"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x6.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.68086-formula567"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x7.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.68086-formula568"><label>(3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x8.png"  xlink:type="simple"/></disp-formula><p>where E is the energy function, w is the weight between the visible layer and hidden layer, b is the visible bias, and c is the hidden bias. Because the connection of each neuron is restricted to the neurons in the complementary layer, the probability of firing of each neuron is given by</p><disp-formula id="scirp.68086-formula569"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x9.png"  xlink:type="simple"/></disp-formula><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> RBM model; in this case, n = m = 4</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x10.png"/></fig><disp-formula id="scirp.68086-formula570"><label>(5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x11.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.68086-formula571"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x12.png"  xlink:type="simple"/></disp-formula><p>The RBM processing flow consists of two repeating steps. First, input data is added to the visible layer, and the hidden layer is calculated using the visible layer’s values as input. At this point, all visible layer and hidden layer combinations are calculated. Second, the visible layer is calculated, using sampling results from the hidden layer as input. By repeating these steps, it is possible to approximate the update formula given by</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x13.png" xlink:type="simple"/></inline-formula>ŋ<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x14.png" xlink:type="simple"/></inline-formula> (7)</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x15.png" xlink:type="simple"/></inline-formula>ŋ<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x16.png" xlink:type="simple"/></inline-formula> (8)</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x17.png" xlink:type="simple"/></inline-formula>ŋ<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/5-7600769x18.png" xlink:type="simple"/></inline-formula> (9)</p><p>where ŋ is learning rate and k is the sampling number. This update formula can be obtained by using contrastive divergence (CD) learning [<xref ref-type="bibr" rid="scirp.68086-ref6">6</xref>] . In this study, we use this algorithm to design the proposed architecture.</p><p>To construct the DBNs, a hidden layer that has completed learning is used as a visible layer for the next RBMs. Deep networks are constructed by stacking these RBMs. After using back-propagation to perform fine-tuning, the DBNs are completed [<xref ref-type="bibr" rid="scirp.68086-ref2">2</xref>] .</p></sec><sec id="s3"><title>3. Proposed Architecture</title><p>In this Section, we describe the overall data flow and specifications of the proposed architecture.</p><p>An overall diagram of the architecture is presented in <xref ref-type="fig" rid="fig2">Figure 2</xref>. First, input data to the RBM unit is obtained from the input buffer, and CD learning computation is repeated within this unit. Simultaneously, the learning update formula is calculated for the update unit, and is stored in the local memory of the update unit. When a learning process is completed, the learning data of the local memory of the update unit is added to the local memory of the RBM unit. These operations are controlled by a common finite-state machine (FSM), controller, and a linear feedback shift register (LFSR).</p><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Overall data-flow</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x19.png"/></fig><p>Input data is assumed to consist of unsigned 8-bit fixed-point numbers representing continuous values from 0 through 1. The bit precision of other parameters is discussed in detail in Section 4. This proposed architecture implements the most basic binary model. We have adopted this model as a foundation, because this model, although it is more suitable for binary data, can be utilized with continuous data and other models after minor modifications. Using binary data as input, every multiplier can be replaced with an AND operation.</p><p>In this Section, we present an example that consists of four RBM blocks with four inputs and four outputs. A detail block-diagram using RBMs divided into 4 blocks is shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>. Three phases occur, which are physically separated by a shift register. These registers store and propagate the value of each block, and also play the role of the pipeline registers. Phase 1 implements the sum-product operation, phase 2 the sampling operation, and phase 3 the parameter update operation. The operation of each phase is presented in the following.</p><sec id="s3_1"><title>3.1. Product-Sum Calculation</title><p>In Phase1, each RBM block multiplies all the inputs and connection weights in parallel, and calculates the respective outputs using an adder tree. This approach is possible because each RBM block is configured on a small scale. Each RBM block has its own local memory to save parameters, which are only used inside each block.</p><p>Each shift controller is responsible of shifting propagated inputs and outputs to calculate all combinations. This movement of data is different in the v → h operation and the h → v operation. <xref ref-type="fig" rid="fig4">Figure 4</xref> shows the operation diagram of Phase1, where (a) pertains to the v → h operation and (b) to the h → v operation. The bit width and the number of words in each local memory area are determined by the number of RBM blocks and the I/O of each block. During the v → h operation, the inputs are shifted between RBM blocks to match the local memory address. During the h → v operation, the accumulated outputs are shifted between RBM blocks. In this case,</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Detail block-diagram of the proposed architecture</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x20.png"/></fig><fig-group id="fig4"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> Shift I/O data and select connection weights flow; the color code suggests the operation order. (a). v to h processing. (b). h to v processing.</title></caption><fig id ="fig4_1"><label>(b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x21.png"/></fig><fig id ="fig4_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x22.png"/></fig></fig-group><p>because the arrangement sequence of the connection weights from the local memory is not identical to the v → h case, the appropriate connection weights must be re-selected. To this aim, the Fredkin gate (<xref ref-type="fig" rid="fig5">Figure 5</xref>) is used to select the correct combinations, as shown in <xref ref-type="fig" rid="fig4">Figure 4</xref>(b) (as a w<sub>ij</sub> = w<sub>ji</sub> in first column); hence, the Fredkin gate is placed at the location of every vertical connection line of the select weights array in <xref ref-type="fig" rid="fig4">Figure 4</xref>(b). Considering n inputs and n outputs, the number of required Fredkin gates equals (n<sup>2</sup>-n)/2. This approach enables calculating data propagation in both ways using one single circuit, and is possible because each RBM block is configured on a small scale.</p></sec><sec id="s3_2"><title>3.2. Sampling Calculation</title><p>In Phase 2, the sigmoid calculation and binomial distribution calculation are performed. After completion of the sum-product operation, a sigmoid function is applied to the sum value. This result is processed by the sampling operation which yield the output of neurons as a probability of neuronal firing as expressed in Equations (4-6). The sigmoid function is approximated as a piecewise linear function to facilitate the implementation on hardware. The piecewise linear function is given by</p><disp-formula id="scirp.68086-formula572"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/5-7600769x23.png"  xlink:type="simple"/></disp-formula><p>where x is the input of the sigmoid function. In order to realize this equation, an arithmetic shifter [<xref ref-type="bibr" rid="scirp.68086-ref10">10</xref>] is used instead of a divider since 1/4 equals 2<sup>−2</sup>. The corresponding circuit schematic is shown in <xref ref-type="fig" rid="fig6">Figure 6</xref>. A binomial distribution calculation is also obtained from a subsequent circuit that determines the output as 0 or 1 by comparing the output of the sigmoid function to random numbers generated by an LFSR. <xref ref-type="fig" rid="fig7">Figure 7</xref> shows the overall sampling operation circuit schematic.</p><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> Fredkin gate</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x24.png"/></fig><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> Circuit schematic of the sigmoid function as a piecewise linear function</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x25.png"/></fig><fig id="fig7"  position="float"><label><xref ref-type="fig" rid="fig7">Figure 7</xref></label><caption><title> Circuit schematic of the sampling operation</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x26.png"/></fig></sec><sec id="s3_3"><title>3.3. Parameter Update Calculation</title><p>In Phase 3, the parameter update calculation is performed. While repeating propagation between the visible layer and hidden layer during the learning process, the update unit calculates the update formula in Equations (7)-(9). <xref ref-type="fig" rid="fig8">Figure 8</xref> shows the circuit schematic of the update operation for weight parameters. Because the RBM blocks calculate in a completely parallel manner, the update unit must have a completely parallel architecture to receive and process the data. In addition, because the update unit must calculate all parameters, it resembles the structure of Phase 1. It contains a local memory to store the update data for the RBM unit; these values are constantly updated during the learning process. Multipliers can efficiently be replaced by AND operators when using binary input data. After all parameters are calculated, the data of the update memory is added to the data of the parameter memory. Multiplication with the learning rate is carried out prior to addition to the parameter memory. The learning rate is quantized to an integer power of 2 (like 1, 1/2, 1/4...), such that multiplication with the learning rate can be approximated to arithmetic shifts.</p></sec></sec><sec id="s4"><title>4. Evaluation of the Necessary Bit Precision</title><p>The necessary bit precision of parameters which are weights, visible biases and hidden biases has been evaluated using a custom emulator written in a C code which can accurately simulate the proposed architecture in terms of data process and bit precision. The MNIST dataset [<xref ref-type="bibr" rid="scirp.68086-ref11">11</xref>] consisting of a popular hand-written digits benchmark is used in this study. The training set includes 60,000 images for training and 10,000 images for testing. We modified all images to binary values and to a size of 16 &#215; 16 pixels to fit our architecture, and developed a 5 layer network of (256-256-256-256-10) neurons. These parameters were selected as a suitable example, without restriction of the generality of the proposed method. The bit-precision evaluation results are presented in <xref ref-type="fig" rid="fig9">Figure 9</xref>. The number of integer bits is fixed to 8-bit, and the number of fractional bits is parameterized from 8-bit to 20-bit. The vertical axis shows the accuracy of classification of hand-written digits from 0 to 9 using 10,000 test images. An excess of 12-bit fractional bit precision of each parameter is observed to be required, while applying fine-tuning improves the accuracy at lower fractional bit-precision.</p><fig id="fig8"  position="float"><label><xref ref-type="fig" rid="fig8">Figure 8</xref></label><caption><title> Circuit schematic of the update operation for weight parameters</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x27.png"/></fig><fig id="fig9"  position="float"><label><xref ref-type="fig" rid="fig9">Figure 9</xref></label><caption><title> Accuracy of the classification with respect to the fractional bit precision, also considering the fine-tuning procedure</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x28.png"/></fig></sec><sec id="s5"><title>5. Results</title><p>We simulated the RTL model (coded in Verilog HDL) of the proposed architecture using ModelSim. The simulation conditions were set as follows. The size ratio of the visible and hidden layers of the RBMs is equal to 1:1. We confirmed the model’s speed and scale characteristics by changing the data size (=the number of neurons in each layer). Four types of models were considered, in which the number of inputs and outputs for each RBM block were 4, 8, 16, and finally in which the size of the data that was not divided into blocks. <xref ref-type="fig" rid="fig1">Figure 1</xref>0(a) shows the processing time of the dataset in which the number of training data batches is 100, the number of learning iterationsis 100, and the number of CD learning repetitions is limited to 1 with respect to the data size (speed characteristics). For each developed model, time is linear with respect to the data size, whereas the conventional CPU operation of an Intel Xeon E5-1660 3.3 GHz has an exponential characteristic. <xref ref-type="fig" rid="fig1">Figure 1</xref>0(b) shows the required number of multipliers with respect to the data sizes (scale/resource characteristics). Because multipliers utilize most of the circuit area in this architecture, the number of multipliers directly affects the circuit scale. The models partitioned into blocks exhibit relatively small linear increases, whereas the non-parti- tioned model exponentially increases.</p><p>The proposed architecture was implemented on a commercial FPGA board (DE3 with an Altera Stratix III FPGA). The performance of the proposed architecture is compared with other FPGA implementations (<xref ref-type="table" rid="table1">Table 1</xref>). Our hardware shows fast speed in terms of CUPS (connection updates per seconds) even while using a slower FPGA clock rate than other developments. Moreover, because of the linear scalability, the speed can be adapted to unit RBM configurations. In addition, we compared our implementation results with a conventional CPU (<xref ref-type="table" rid="table2">Table 2</xref>). The software implementations are realized in 1 thread using gcc with ?O3 optimization options. The modified MNIST benchmark detailed in Section 4 is used. Twenty learning times and 100 batch size of data were simulated, showing that our implementation provides a 134&#215; speed up factor with respect to the CPU software implementation.</p></sec><sec id="s6"><title>6. Conclusions</title><p>From these results, we conclude that the proposed architecture could reduce circuit scale more effectively than simple parallelism. Furthermore, it could achieve both speed and circuit scaling in a linear manner with respect to the network size in terms of numbers of neurons. Consequently, designers may select the trade-off between speed and circuit scaling which is suitable to their requirements. In addition, the proposed architecture has been</p><fig-group id="fig10"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>0</label><caption><title> Architectural simulation of processing speed and resource requirements. (a) Speed characteristics. (b) Resource characteristics.</title></caption><fig id ="fig10_1"><label>(b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x29.png"/></fig><fig id ="fig10_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/5-7600769x30.png"/></fig></fig-group><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Performance summary of RBMs implemented on FPGAs</title></caption><table><tbody><thead><tr><th align="center" valign="middle" ></th><th align="center" valign="middle" >This work (2016)</th><th align="center" valign="middle" >Kim et al. (2009) [<xref ref-type="bibr" rid="scirp.68086-ref12">12</xref>]</th><th align="center" valign="middle"  colspan="2"  >Ly &amp; Chow (2010) [<xref ref-type="bibr" rid="scirp.68086-ref5">5</xref>]</th><th align="center" valign="middle" >Kim et al. (2014) [<xref ref-type="bibr" rid="scirp.68086-ref13">13</xref>]</th></tr></thead><tr><td align="center" valign="middle" >Platform</td><td align="center" valign="middle" >EP3SL340</td><td align="center" valign="middle" >EP3SL340</td><td align="center" valign="middle"  colspan="2"  >XC2VP70</td><td align="center" valign="middle" >XC6VSX760</td></tr><tr><td align="center" valign="middle" ># of chips</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >1</td></tr><tr><td align="center" valign="middle" >Network</td><td align="center" valign="middle" >256 &#215; 256</td><td align="center" valign="middle" >256 &#215; 256</td><td align="center" valign="middle" >128 &#215; 128</td><td align="center" valign="middle" >256 &#215; 256</td><td align="center" valign="middle" >256 &#215; 256</td></tr><tr><td align="center" valign="middle" >Clock [MHz]</td><td align="center" valign="middle" >50</td><td align="center" valign="middle" >200</td><td align="center" valign="middle"  colspan="2"  >100</td><td align="center" valign="middle" >80</td></tr><tr><td align="center" valign="middle"  rowspan="2"  >GCUPS<sup>a </sup></td><td align="center" valign="middle" >16.6 (4 &#215; 4)<sup>b </sup></td><td align="center" valign="middle"  rowspan="2"  >N/A</td><td align="center" valign="middle"  rowspan="2"  >1.6</td><td align="center" valign="middle"  rowspan="2"  >3.1</td><td align="center" valign="middle"  rowspan="2"  >59.6</td></tr><tr><td align="center" valign="middle" >66.4 ( 16 &#215; 16)<sup>b </sup></td></tr></tbody></table></table-wrap><p>a. CUPS = the number of weight/time for a learning step. b. Network size of a RBM block (16 &#215; 16 is assumed for estimation).</p><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Performance comparison with a CPU</title></caption><table><tbody><thead><tr><th align="center" valign="middle" ></th><th align="center" valign="middle" >Intel Xeon 3.3GHz 1 thread ?O3</th><th align="center" valign="middle" >Our FPGA implementation (block IO is 4 &#215; 4)</th></tr></thead><tr><td align="center" valign="middle" >Time [ms]</td><td align="center" valign="middle" >627,500</td><td align="center" valign="middle" >4753</td></tr><tr><td align="center" valign="middle" >Speed up</td><td align="center" valign="middle" >1&#215;</td><td align="center" valign="middle" >134&#215;</td></tr></tbody></table></table-wrap><p>implemented on FPGA showing a 134&#215; speed up factor with respect to a conventional CPU, and much faster operation compared to existing FPGA developments.</p></sec><sec id="s7"><title>Cite this paper</title><p>Kodai Ueyoshi,Takao Marukame,Tetsuya Asai,Masato Motomura,Alexandre Schmid, (2016) FPGA Implementation of a Scalable and Highly Parallel Architecture for Restricted Boltzmann Machines. Circuits and Systems,07,2132-2141. doi: 10.4236/cs.2016.79185</p></sec></body><back><ref-list><title>References</title><ref id="scirp.68086-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Hinton, G. and Salakhutdinov, R.R. (2006) Reducing the Dimensionality of Data with Neural Networks. Science, 313, 504-507. http://dx.doi.org/10.1126/science.1127647</mixed-citation></ref><ref id="scirp.68086-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Hinton, G., Osindero, S. and Teh, Y. (2006) A Fast Learning Algorithm for Deep Belief Nets. Neural Computation, 18, 1527-1554. http://dx.doi.org/10.1162/neco.2006.18.7.1527</mixed-citation></ref><ref id="scirp.68086-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">LeCun, Y., Bengio, Y. and Hinton, H. (2015) Deep Learning. Nature, 521, 436–444.  
http://dx.doi.org/10.1038/nature14539</mixed-citation></ref><ref id="scirp.68086-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Kim, S., McMahon, P. and Olukotun, K. (2010) A Large-Scale Architecture for Restricted Boltzmann Machines. Proceedings of the 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM), Charlotte, NC, 2-4 May 2010, 201-208. http://dx.doi.org/10.1109/fccm.2010.38</mixed-citation></ref><ref id="scirp.68086-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Ly, D. and Chow, P. (2010) High-Performance Reconfigurable Hardware Architecture for Restricted Boltzmann Machines. IEEE Transactions on Neural Networks, 21, 1780-1792. http://dx.doi.org/10.1109/TNN.2010.2073481</mixed-citation></ref><ref id="scirp.68086-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Hinton, H. (2002) Training Products of Experts by Minimizing Contrastive Divergence. Neural Computation, 14, 1771-1800. http://dx.doi.org/10.1162/089976602760128018</mixed-citation></ref><ref id="scirp.68086-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Welling, M. and Sutton, C. (2005) Learning in Markov Random Fields with Contrastive Free Energies. Proceedings of the 10th International Workshop on Artificial Intelligence and Statistics (AISTATS), Barbados, 6-8 January 2005, 397- 404.</mixed-citation></ref><ref id="scirp.68086-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Salakhutdinov, R.R., Mnih, A. and Hinton, G. (2007) Restricted Boltzmann Machines for Collaborative Filtering. Proceedings of the International Conference on Machine Learning, 24, 791-798.  
http://dx.doi.org/10.1145/1273496.1273596</mixed-citation></ref><ref id="scirp.68086-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Fischer, A. and Igel, C. (2014) Training Restricted Boltzmann Machines: An Introduction. Pattern Recognition, 47, 25-39. http://dx.doi.org/10.1016/j.patcog.2013.05.025</mixed-citation></ref><ref id="scirp.68086-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Nitta, Y. and Nakamura, K. (1989) US Patent 4,890,251. Washington, DC: U.S.</mixed-citation></ref><ref id="scirp.68086-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">LeCun, Y., Bottou, L.,Bengio, Y. and Haffner. P. (1998) Gradient-Based Learning Applied to Document Recognition. Proceedings of the IEEE, 86, 2278-2324. http://dx.doi.org/10.1109/5.726791</mixed-citation></ref><ref id="scirp.68086-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Kim, S.K., MacAfee, L.C., McMahon, P.L. and Olukotun, K. (2009) A Highly Scalable Restricted Boltzmann Machine FPGA Implementation. Proceedings the International Conference on Field Programmable Logic and Applications, Prague, 31 August 2009-2 September 2009, 367-372. http://dx.doi.org/10.1109/fpl.2009.5272262</mixed-citation></ref><ref id="scirp.68086-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Kim, L.W., Asaad, S. and Linsker, R. (2014) A Fully Pipelined FPGA Architecture of a Factored Restricted Boltzmann Machine Artificial Neural Network. ACM Transactions on Reconfigurable Technology and Systems, 7, 1-23.  
http://dx.doi.org/10.1145/2539125</mixed-citation></ref></ref-list></back></article>