Slashdot Mirror


Deep Learning Is Eating Software (petewarden.com)

Pete Warden, engineer and CTO of Jetpac, shares his view on how deep learning is already starting to change some of the programming is done. From a blog post, shared by a reader last week: The pattern is that there's an existing software project doing data processing using explicit programming logic, and the team charged with maintaining it find they can replace it with a deep-learning-based solution. I can only point to examples within Alphabet that we've made public, like upgrading search ranking, data center energy usage, language translation, and solving Go, but these aren't rare exceptions internally. What I see is that almost any data processing system with non-trivial logic can be improved significantly by applying modern machine learning. This might sound less than dramatic when put in those terms, but it's a radical change in how we build software. Instead of writing and maintaining intricate, layered tangles of logic, the developer has to become a teacher, a curator of training data and an analyst of results. This is very, very different than the programming I was taught in school, but what gets me most excited is that it should be far more accessible than traditional coding, once the tooling catches up. The essence of the process is providing a lot of examples of inputs, and what you expect for the outputs. This doesn't require the same technical skills as traditional programming, but it does need a deep knowledge of the problem domain. That means motivated users of the software will be able to play much more of a direct role in building it than has ever been possible. In essence, the users are writing their own user stories and feeding them into the machinery to build what they want.

25 of 147 comments (clear)

  1. Ok, I got this by rsilvergun · · Score: 2

    Deep learning's eating software and software's eating the world. We just need a few waves of Chinese needle snakes to eat Deep learning. Then gorillas to eat the snakes. Finally when wintertime rolls around, the gorillas simply freeze to death.

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
  2. Ya right... by Matt.Battey · · Score: 2

    Ya, I'm calling BS. Give us some concrete examples of how ML/AI/DL is doing anything other than burning CPU cycles on public clouds that drive up revenue for the cloud vendor.

    1. Re:Ya right... by religionofpeas · · Score: 2
    2. Re:Ya right... by David_Hart · · Score: 2

      Google translate: https://www.nature.com/news/de...

      I think that he meant an everyday example like building better accounting software not something that would obviously benefit from deep learning like language tools.

      Language tools are an obvious use for deep learning. Especially when users/contributors can tweak the context of words and idioms that do not directly translate very well into words and may require some cultural knowledge for proper use in sentences.

      Something like accounting software would be hard to visualize using deep learning since the outcome is pure calculation. And argument could be made that deep learning would be suited to tax software for optimizing the reduction of your tax bill, through various what-if scenarios, and perhaps in keeping the rules updated.

    3. Re:Ya right... by Dog-Cow · · Score: 3, Insightful

      Essentially, ML can replace (parts of) systems that rely on heuristics. Anything with fixed rules, no matter how complicated the rule set, will not benefit. Why train a ML system when you can get 100% deterministic answers?

  3. Nice Advertisement by prefec2 · · Score: 4, Interesting

    Most software today and in the coming decades is designed and developed to support business processes or data flow and execution in scientific processes. These systems need a deterministic and foreseeable behavior. Yes, you may use "learning" classification mechanisms such as neural networks to support some tasks, but this is not changing how we develop software. Especially, developing software is usual a technical and social process, as you have to understand the demands and needs of users, which require interviews and discussions with users. You also need to communicate with UI designers to develop together with users and UI designers useful and easily to understand interfaces. And yes, you have to map all this onto technology.

    1. Re:Nice Advertisement by cellocgw · · Score: 2

      Not to mention the spate of articles showing how to destroy deep learning results by changing a few well-chosen pixels in images. You gotta have a heavily rule-based system in many cases, or in pretty much any case where "five 9s" reliability is involved.

      --
      https://app.box.com/WitthoftResume Code: https://github.com/cellocgw
    2. Re:Nice Advertisement by religionofpeas · · Score: 2

      The article isn't saying that traditional software development is changing. What is happening is that some problems are suitable for a solution based on deep learning, and for those problems, the traditional programmer is replaced by someone specializing in configuring the neural net and training it. Pretty obvious, of course.

    3. Re:Nice Advertisement by edittard · · Score: 2

      Of course if it looks like it'll save money then it'll get applied to problems which aren't suitable. There will be tears; whether they're of sadness or laughter, we know not yet.

      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
    4. Re:Nice Advertisement by DontBeAMoran · · Score: 5, Funny

      I think it's a reflection that people always relate to what they know.

      For people who work in deep learning software, almost everything is just petabytes of data to be analyzed and classified.

      For people who work with microcontrollers, almost all of today's software is pure bloat that wastes CPU cycles and RAM.

      For people who work in security, almost all programmers are idiots.

      For people who work in design, almost everything is ugly.

      For everything else, there's MasterCard.

      --
      #DeleteFacebook
  4. Re:Accessible by jellomizer · · Score: 3, Interesting

    Except for the fact the deep learning systems, may not be efficient enough. There are some tasks which it excels at, however some tasks there just isn't the volume or rewards for outcomes for the system to adapt fast enough to.

    Lets say a flood control dam system. Which is is strictly coded if water goes above this line, open the dam and flood the down, because otherwise the damage is far greater than flooding the town. The reason why this is computer controlled is because it takes the faulty morals out of the picture. You wouldn't want to be the one to press the button and flood the town, even though it is for the greater good. A Deep Learning system, will want to take more variables into account, and will either decide that it is important to press the button before it hits the limit, as it would only create minor flooding problems, or too late figuring that it can wait a little longer creating a catastrophic failure.

    Deep Learning often creates a lot of superstitious like behaviors (As shown in the funny walk of Googles Deep learning to walk video) Where it learned to do the task, but not at optimal way. This may just be a mater of time for the technology to get better, however it isn't a time to panic and toss out your CS Degree and get a job at your local Walmart as a greeter.
     

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  5. If so, for a tiny fraction of the market by Junta · · Score: 4, Insightful

    ML is generally enabling scenarios that were just too tedious to actually do by developer hands. Sure there are specific scenarios where developers had done the best they can (and generally failed) with hopelessly unstructured data, but for the most part those problems were just left untouched as infeasible to do manually.

    For the vast majority of software development, ML doesn't add anything. If you have no unstructured data or a way to impose structure, ML doesn't do anything over boring old programming. Even when you find yourself in one of the very chaotic, large, and diverse data sets where ML can in theory help you sort through, you have to first chew through enough data in training to get decent confidence. So you not only need a large data set, you also need to have a continued need after human assisted training has already done the work on a big chunk of that data. Even then you may be grasping for some intelligent way to apply ML techniques, because the kicker is you have to have some sort of real idea of what to do, even if you have a 'how to do it'.

    Big Data has done this same song and dance. ML is now the purported answer to 'once collected and have tools to analyze, most orgs have no idea what to do with the data'. I suggest that the orgs will still have no idea what to do with the data, and ML won't move the needle much in the wider market because the root cause is just a general lack of thoughts on what to do with the data. This is the curse of hyped adoption, the vast majority of adopters will be disappointed because it doesn't magically solve.

    --
    XML is like violence. If it doesn't solve the problem, use more.
    1. Re: If so, for a tiny fraction of the market by Ken_g6 · · Score: 2

      Don't say ML for machine learning, when talking programming. There's already an unusual language called ML, so it's confusing.

      --
      (T>t && O(n)--) == sqrt(666)
  6. linear regression by dmitrygr · · Score: 3, Interesting

    And by "deep learning" in most cases they mean "linear regression on cleaned-up data"

    --
    -------
    1. Enjoy your job
    2. Make lots of money
    3. Work within the law

    Choose any two.
    1. Re:linear regression by serviscope_minor · · Score: 3, Interesting

      No, not really, and I wouldn't call this insightful.

      Deep learning is not especially well defined, but it's not linear regression. I've seen several competing/complementary definitions.

      1. A neural net (much) greater than 3 layers deep. A sufficiently wide 3 layer net has enough capacity to run any function, so a lot of ANN learning focussed on these in the past. Turns out having lots more layers makes training much more tractable (particularly with stochastic gradient descent an batchnorm).

      2. Convolutional nets (where you're basically learning convolutional kernels, which saves a huge number of parameters compared to a normal net especially if you have many layers) with many layers.

      3. Something which learns the low-level features in the same optimization as everything else. Traditional ML algorithms were often structured as a feature extraction stage which takes the data and extracts some features in a human designed manner. Then applies ML, but if the ML can't optimize the right loss, you go for the closest loss you can, then get the thing you want with post-processing.

      A nice example would be the Viola-Jones face detector. The features are a bunch of zero mean box filter combinations applied to an image, combined with a threshold, each one giving a different binarisation of the image. Those were hand designed. a modified Adaboost[*] is then learned to to get a good selection and weighting of the features to give a pixelwise classification of the image. You want a bounding box, so the final stage is to extract a bounding box from the binarization.

      The "problems" with that are that there's nothing to say those features are optimal, and the pixelwise loss is the wrong thing to optimize. A deep system takes pixels in and spits out a bounding box (or several). The point is you can compute derivatives with respect to all the stages so you optimize everything agains the loss you're actually interested in.

      [*] They actually use a cacade (degenerate decision tree) with a biased adaboost classifier at each node. Either way it's an ML algorithm with largely the same properties.

      --
      SJW n. One who posts facts.
  7. Neural networks are fragile by bradley13 · · Score: 5, Informative

    Once upon a time, I did my doctorate in machine learning. The machines were less powerful, but the algorithms? Basically the same as they are today. Sorry, the stuff most widely in use is still the same back-propagating neural networks. The machines are just faster, so the networks can be bigger. That's it.

    Neural networks can work really well on specific problem domains. The problem is: You have no idea what they are actually learning. The features that a network identifies within its layers are not really accessible to us. The problem lies, imho, in the total lack of domain knowledge. Since the network doesn't understand what the objects in those pictures are, they are doing a purely mechanical analysis of some (and who knows which) aspects of the pictures. They can learn some really weird things.

    In a well-trained network, the results mostly coincide with our expectations. In a completely isolated domain, like chess or go, a network can be trained sufficiently to perform quite well. However, in open domains, they are fragile: we have no idea when they will break. Look at the video of the turtle being identified as a rifle (in the link above). Why does the identification jump seemingly at random? When will a cat will suddenly be guacamole? When will a pedestrian crossing the road will suddenly be just a pile of leaves? We have no idea, none.

    It is certainly true that selecting and managing training data is a very different task from classic programming. However, it doesn't really take much domain knowledge. In most domains, gathering training data is tedious, not difficult. The hard part comes in figuring out how to make the best use of that data to train and test a network - and that requires a deep understanding of how the neural networks work (and how they don't work). Plus, frankly, a huge pile of trial and error, because there aren't many rules on how to best structure a net for any particular task.

    --
    Enjoy life! This is not a dress rehearsal.
    1. Re:Neural networks are fragile by swb · · Score: 2

      I think some of these mistakes are really kind of interesting in an epistemological way. They remind me of a child making what are apparently nonsense associations between things that turn out to be weirdly insightful. Adults don't make the same comparisons mostly because they've been taught they're wrong, not because they actually are.

    2. Re:Neural networks are fragile by serviscope_minor · · Score: 2

      The machines are just faster, so the networks can be bigger. That's it.

      Not just. People have come up with better ways of training networks too which allows bigger networks to be trained in reasonable time without appaling overfitting.

      People are also coming up wiht inventive loss functions and figuring out differentiable approximations of things we want to optimize, which allows the networks now to be applied to a wider range of problems.

      Look up Generative Adversarial Networks for some rather fun stuff (pix2pix has a very fun demo online, anc cyclegan has some pretty cool videos).

      The rest I do agree with.

      --
      SJW n. One who posts facts.
    3. Re:Neural networks are fragile by HuguesT · · Score: 2

      Yes NN are the same basic architecture, but it's like saying we are still programming in C, so nothing has changed since the early days of Unix except computers are faster. You'd be right in a way but not quite.

      In ML we have discovered the importance of sparse representations and regularisation (from wavelets and optimisation) leading to better, more efficient learning methods; better gradient descent methods, and more importantly innovative architectures. The keywords of today are not backpropagation but dropout, adversarial network, generative networks, reinforcement learning, transfer learning, recurrent networks, long short-term memory, and many more.

      Will NN especially deep ones solve AI ? Probably not yet, but there has been some significant progress. As more people understand what has truly been done, what its limitations are, the hype will die down a little. Until the next step.

  8. Call me... by sh00z · · Score: 5, Insightful

    ...when you can input a photograph of an airplane and the Navier-Stokes equation, and get a flight simulator as output.

  9. Re:Only for general programming by religionofpeas · · Score: 2

    but they will take far too long to be useful for the microsecond resolution trading that is done today

    A guy like Warren Buffett may think a year before doing a trade, and he's been pretty good at it. Not everything has to be done at microsecond level.

  10. Most programming is glue by GuB-42 · · Score: 4, Insightful

    Most programming jobs involve connecting stuff together. Converting a database format to another, design a GUI around it, add the entry points to turn it into some kind of module, extract or integrate features, etc... Even machine learning typically involves gathering a bunch of data turn it into a form that's acceptable for the learning module and feeding the results to some other component.
    I don't know how machine learning will help with all that stuff. An AI won't write a video game, it can help making mobs smarter, generating convincing maps or optimizing revenue. But in the end that's just a module connected to other modules, and programmers will be needed to put the round peg into the square hole.
    It will make things a bit more high level, as always. But except for a bunch of PhDs, I don't expect major changes in the way people program.

  11. Organic vs. Planned by Tablizer · · Score: 2

    I work on mostly CRUD and e-reporting applications. Generally an org wants these kinds of apps to be predictable and reliable, not "organic" (trial and error). I don't see organic learning as a viable way to program such in the future.

    However, I can see AI being used to test the apps and find potential bugs in the source code, being that "suspicious pattern detection" is something it can do relatively well. It may also suggest code, schema, and UI refactorings. But such AI would be an adviser to programmers, not behind the wheel itself.

    Clippy impression: "It looks like you have a lot of code pattern duplication between modules 7, 22, 43, and 51. Would you like help refactoring?"

  12. No by Jezral · · Score: 3, Insightful

    For computational linguistics (translation, analysis, etc), machine learning is not a net gain. What ML proponents forget to factor in is the vast time spent on gathering and hand-annotating large quantities of text (gold corpora).

    Even worse, for many many languages, these gold corpora simply do not exist and there are no plans on making them, or they are too small to be used for ML.

    And even when the gold corpora do exist, models trained on them become tightly coupled with the data. They become domain specific. In order to escape domains, you need an order of magnitude more data.

    Instead, one can make a domain-independent rule-based system in a fraction of the total time spent on machine-learning models. But rule-based has become this weird anathema - people will even write papers that use rule-based methods, while hiding it behind machine-learning terms.

    I'm sure this also holds for other fields.

  13. Pretty common epiphany by HuguesT · · Score: 2

    In my line of work I use a lot of mathematical optimisation. As Stephen Boyd says in his course, everybody working in optimisation has at some point this epiphany: "everything is an optimisation problem". And this is true. However to make it work you need to be very good at mathematical modelling, you need to know your methods, and most of the time the problem is unsolvable anyway by the classic methods.

    In this instance maybe a lot of programming can be modelled by some deep NN. However you have to come up with a relevant architecture for your problem, you need to train it, and you need to evaluate it. It may save you time to do so, but if you need so solve something like FizzBuzz, that may not be the best way.