<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#C0C0C0" text="#000000">
    <div class="moz-cite-prefix">Sorry for my late response to this
      topic, but I do believe Erlang is actually a great language for
      the ML and statistics space.  Take a basic feed-forward NN with
      back-propagation, for example.  What you'd normally have in terms
      of mathematical computation is mainly addition and
      multiplication.  You only need to put together a perceptron, which
      are only inputs (including a bias) multiplied by respective
      weights, you add them up and pass this value through a function
      like sigmoid or hyperbolic tangent and that's that. 
      Back-propagation, as a way to adjust the weights during the
      training phase, doesn't require math-wise anything more
      complicated.  You combine the perceptrons for the hidden and
      output layers and you got yourself a NN.  In this configuration,
      deep learning will simply be two or more hidden layers, instead of
      one.  The key thing to maximize the use of Erlang is certainly to
      distribute the load through processes, so each perception could be
      one individual process, for example.  Definitely, not rocket
      science.  Now, I concur that in some situations it might be
      advantageous to write a module, say for a perception, in C and
      make use of it within Erlang, but there is no reason why you
      couldn't start with Erlang and gradually move to that direction,
      if need be.<br>
      <br>
      Cheers,<br>
      Alex<br>
      <br>
      <br>
      On 02/10/2016 06:31 AM, Jesper Louis Andersen wrote:<br>
    </div>
    <blockquote
cite="mid:CAGrdgiUeMd5dKDXaOL8pYR1JPKMMNktRZ6kKrSj8xtsO9b=BWg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Wed, Feb 10, 2016 at 10:34 AM,
            Samuel <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:samuelrivas@gmail.com" target="_blank">samuelrivas@gmail.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div id=":mm" class="a3s" style="overflow:hidden">I am not
                aware of existing ML or linear algrebra libraries in
                erlang<br>
                that can be used to quick start an ML project, but just
                piping into<br>
                tensorflow (or any other existing library/framework)
                isn't really<br>
                doing ML with erlang, is it? You can as well just use
                tensorflow<br>
                directly.</div>
            </blockquote>
          </div>
          <br>
        </div>
        <div class="gmail_extra">The question is if this is a practical
          problem which needs solving or it is for research. If you are
          researching how to construct, say, SVM or NNs, then surely
          Erlang is a good vehicle. But in practice, there is a number
          of things which makes Erlang unsuitable:<br>
          <br>
        </div>
        <div class="gmail_extra">* ML is often CPU bound. You don't want
          a bytecode interpreter to be a limiting factor here. Even if
          the interpreter in Erlang is state-of-the-art and highly
          optimized, it is not far fetched that a FP-intensive program
          will be roughly a factor of 30 faster if compiled in a lower
          level language.<br>
          <br>
        </div>
        <div class="gmail_extra">* GPUs are popular in ML models for a
          reason: they speed up the FP computations by a factor of 3000
          or more. This in itself should hint you that you need
          something else than Erlang.<br>
          <br>
        </div>
        <div class="gmail_extra">* Erlangs word overhead per process and
          terms means a lower-level model can pack many more entities in
          memory. This affects caching behavior.<br>
          <br>
        </div>
        <div class="gmail_extra">Training of the model is often off-line
          and using the model is online in the system. How you train
          your model is less important. This is why I'd just outsource
          this problem to the libraries built and tuned for it. It is
          like solving LinAlg problems but forgetting everything about
          existing LAPACK and ATLAS routines in Fortran.<br>
          <br>
        </div>
        <div class="gmail_extra">A model, in Erlang, which could be
          viable is to use Erlang to produce programs for lower level
          consumption by compilation. But these are problems for which
          languages such as Haskell and OCaml dominates for a reason:
          their type systems makes it far easier to pull off.<br>
          <br>
        </div>
        <div class="gmail_extra"><br clear="all">
          <br>
          -- <br>
          <div class="gmail_signature">J.</div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
erlang-questions mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>