Science is more of a plodding business of incremental advance rather than one of frequent bombshell discoveries. Too much is already known about the world for there to be too many "Eureka!" bathtub moments, or scientists "surprised" by Apples falling on their head.
Of course occasionally some experimental outcome or accidental discovery may run counter to expectations, but given that experiments are designed to probe the limits of our knowledge it'd be a bit sensationalist to say that experimental outcome A is "surprising" vs experimental outcome B, especially since outcome A might be what the experimenter was hoping for as confirmation of some new intuition/theory in the making.
I'm not sure what sources your reading that gives the impression that science is still a non-stop party of surprising discovery, but sadly it seems more like sensationalist pop-sci journalism than reaility.
So if the programmer has a function shoot_self_in_foot(char *buffer), sometimes passed pointers to arrays of various sizes, maybe sometimes to buffers allocated on the heap, where is the boundary that should be checked?
A static analysis tool (which an incompetent programmer anyways won't be using) could at best warn you that certain usages are suspect. The compiler can't generate runtime code to check since all it has is a raw pointer with no known limit. The C ABI doesn't even permit passing a pointer limit even if one were known.
The real solution is only to use unsafe languages where you have to. Most user land programs shouldn't be using things like raw pointers.
It's all very well to say the programmer should be careful or should use this or that verification tool/option, but at the end of the day people make mistakes (especially given the modern race to the bottom trend of hiring cheap incompetent programmers), and once you've chosen to use a language where shooting yourself in the foot is an option, you can guarantee that it will happen.
Incidently I happen to think C++ (not C) is a fine language for writing applications in, but too bad it relies on programmer constraint to use safe features and avoid legacy C ones.
C++ is really two languages in one: backwards-compatible C and modern C++, and unfortunately there's nothing to stop programmers from inappropriately using low level C features when safer C++ alternatives (smart pointers, STL data structures) would be a better choice.
The C++ standards body should define a "safe-C++" subset that doesn't allow legacy features like C-style arrays and raw pointers. The compilers could have an option to enforce safe mode and only allow exceptions in sections of code explicity marked as unsafe (#pragma unsafe ?).
Pre-2011 iterators were a bit clunky, but with the addition of "auto" and range-based for loops (where you don't even see the iterator), there's not much to compain about:
for (auto value : my_list) {
std::cout << value << "\n"; }
Or, if you really want to see the iterator:
for (auto iter = my_list.begin(); iter != my_list.end(); ++iter) {
auto value = *iter; }
I don't see what's wrong with smart pointers either (assuming we're talking about the modern std::unique_ptr or std::shared_ptr). Of course, having both stack-based objects and pointers (smart or not) C++'s syntax is never going to be as clean as a language where everything is a proxy to a refererence counted heap-based object, but that's the price you pay for flexibility.
It sounds like you're talking about C++ pre-2011..
If your writing modern C++ and find yourself allocating or freeing memory (other than in exceptional circumstances), then you are doing something wrong.
The STL, and more generally RAII principle, is based on classes that internally allocate memory (RAII => aquire resources) as needed and automatically free them in the destructor.
Now when all reference are destroyed, the underlying (in this case std::string) variable will be automatically destroyed and memory freed.
C++ has grown to be very complex, especially if you are doing generic template programming - typically writing frameworks or libraries rather than applications, but I'd say it also to adheres to the "simple is easy, hard is possible" paradigm.
Well, my real point is that you can't dismiss all of today's "AI" advances as pattern recognition. Predicting the future consequences of your actions based on past experience (i.e. reinforcement learning) is a lot more than pattern recognition.
The press no doubt will call things whatever they want in an effort to garner eyeballs and sell advertizing, but note that the researchers making these ML/neural net advances themselves call it ML - the AI hype is thanks to the press, not researchers overselling their own (impresive though it may be) work.
Not exactly - most of what the press has decided to call AI is machine learning of some form or another - usually either some form of supervised learning or reinforcement learning.
It's reasonable to characterize some simple supervised learning applications (image recognition, speech recognition) as pattern recognition, but generative models where the program is *doing* something such as generating speech, or playing Go, or, as here, imagining/predicting what a scene would look like from a novel viewpoint, obviously go beyond just recognizing a pattern.
In fact, ALL intelligence is "just" a matter of pattern recognition then taking an adaptive action is response to that, so in order to discuss this intelligently you need to use some nuance.
No, and neither can it cook you breakfast.. because it's - very specifically - a program to predict what multi-object scenes look like from viewing angles.it hasn't seen before.
FWIW there are now programs (also machine learning based, and otherwise entirely unrelated to the prgram being discussed) that do a very god job on colorizing B/W photos.
That in of itself makes the results next to useless.
In particular, considering C++ pre 2011 and after (c++11) as the same language from a prone-to-bugs POV is ridiculous. Sure, since it's backwards compatible you can continue to shoot yourself in the foot like it's 2010 (or 2000 - sheesh!) if you really want to, but if you're using C++ nowadays and having problems like memory leaks or dangling pointers then YOU are the problem, not the language.
I'm sure other languages have similar issues - if you don't use the latest features put there to help you, then who's fault is it?
This summary also makes me question the methdology:
The results? "The languages with the strongest positive coefficients - meaning associated with a greater number of defect fixes are C++, C, and Objective-C, also PHP and Python. On the other hand, Clojure, Haskell, Ruby and Scala all have significant negative coefficients implying that these languages are less likely than average to result in defect fixing commits."
Seems a bit suspicious that it's all the widely used languages, regardless of whether they are low level systems programming languages like C/C++, or high level scripting languages like Python, are per-their-way-of-measurement, more buggy than all the way more obscure ones such as Clojure, Haskell, Scala...
Wait until you are really ready to go (don't talk about it before then), then talk to your boss and tell him/her you're ready to retire but are flexible to the exact timing up to some limit (max 6 months, say).
This has nothing to do with AI, and especially nothing to do with AI's designing AI's, regardless of how much folk want to believe that to be true.
Qualifications: I wrote my own neural network framework.
What google did is use an goal-optimizing search (AutoML) to test all combinations of a highly constrained human designed image-classification neural network architecture.
The car analogy:
You hand design a car but make a bunch of the design choices parameters:
- number of doors 2 or 4
- number of cylinders 4, 6 or 8
- rim size 19/20/21
You select the optimal one of these variants according to some metric (say drag coefficient) by tweaking each of these design parameters, testing them in your CAD-tool, and doing more of what works (20 inch rims better than 19? try 21 inch!).
You post a slashdot story "AI overload designs AI overlord" (because, after all, "AI overload designs car" is too boring, even if *slightly* more correct).
What I meant is that grocery delivery (regardless of store) is an upscale service since one way or another you're going to pay extra for delivery. Most folk are struggling to make ends meet.
I'd assume Amazon is going to be using WholeFoods as part of their AmazonFresh grocery delivery service, which is by definition an upscale service, so well matched to the prime/high-cost locations and WholeFoods demographic.
Yeah - it's a complicated problem that requires a multi-facted response. So what if a parole system for refugees won't solve everything? Why do you even bother to say that?
What a parole system *would* do is simply to hold recent immigrants to a higher standard until they've proved themselves by the passage of time. Come to the UK and start communicating with a network of known terrorists within a month or so, or be subject of a warning from a foreign intelligence agency? Get deported.
What the thresholds for action are for people on the terrorist watch list, neither of us know, but I'd say evidentially they are too lax.
If you want to prevent rather than just after-the-fact-punish terrorist attacks (I do, maybe you don't - you tell me) then you need to be willing to act on the data you are gathering, and given the pathetically predictable history of attacks by folk where there had been a zillion red flags known to authorities (have they announced the current attackers and their contacts were already known yet?), I'd say current thresholds for action are too low.
BTW congrats on using the word "fuck" a lot. Really impressed.
When terrorist attacks are being carried out by people already suspected of being terrorists there's a failure in the system. You need to act before the crime is commited, not afterwards, else what's the point?
You needs a calibrated response. It's not an all or nothing deport all muslims else let them all in and turn a blind eye as they preach hate in British mosques or go overseas for terrorist training.
What's wrong, for example, with my two suggestions:
1) A parole period for immigrants
2) Rather than allowing terrorist watch list members to rack up more and more evidence against them without ever taking any action, how about having progressive thresholds of evidence at which action will be taken?
You're OK with a point system for losing your driver's licence I suppose? It's not all or nothing... as evidence racks up that you are a dangerous driver the points rack up until you eventually lose your licence. "How unfair!" YOU say..."we should have waited until he actually killed someone on the road before acting".
Terrorists obviously think spreading videos on facebook etc helps their cause, even if you don't. This in of itself should be enough reason to stop it. Even if this wasn't the case, why would anyone in their right minds want to allow terrorist organizations to use FaceBook/etc as their publishing and distribution partner? FaceBook is an immoral compacy - they'd rather err on the side of keeping users than on offending a few by taking a moral stance and stop supportng terrorist material under the guise of "free speech". Seeing as these companies won't do it themselves, the govermnet needs to change the law to make this type of terrorist assistance illegal.
Sure, cracking down on FaceBook, etc for distributing terrorist content is only a part of the problem, but it should be done anyway. Not allowing free press for the IRA was a great policy, and the same should be done here.
What infuriates me about these attacks is that inevitably it turns out the attackers were already known to the authorities and on some terrorist watch list. In the recent Manchester attack the FBI had even warned the UK about the attacker(s) in addition to the UK themselves having been tracking them.
The UK (and US too, for that matter) has FAR too high a tolerance for known extremists being allowed to live there. Some of these people need to be stripped of citizenship if applicable and deported (or jailed if that's not possible)... maybe institute a "three strikes and you're out" type of policy. Maybe change the law to have first generation immigrants "on probation" with lower levels of proof required for deportation.
There's no reason to presuppose that an AI would want to wipe use out, but equally well no reason to be complacent about the possibility either!
Presumably any AI built by a responsible person will come with a non-threatening set of built-in predispositions (such as human pleasure-seeking), but who's to say what it learns or thinks once it gets out of the factory?
Given our inability to build hack-proof software it seems reasonable to assume that any super-human AI won't be constrained by our own attempts to build in safety controls. Ultimately they, on occasion at least (robot uprisings!), will do whatever they want.
One potential danger is that some AI comes to see us as an existential threat to itself, and thinks that needs to be addressed due to some goal/belief it has come to hold. Or maybe it ultimately regards us as irrelevant and expandable just as we do, say, ants... it may not seek out to eradicate us, but may wreak havoc on occasion as collateral damage (considered unimportant) incurred as part of something it is trying to achieve.
Of course this is all far in the future, but I assume we'll eventually build fully autonomous robots, or maybe just desk-bound super-intelligent assistants that could impact the real world by hacking into power plants, factories and suchlike.
All true, and Google/DeepMind never said that AlphaGo, in of itself, is anything other than a dedicated Go playing program. I wouldn't compare it to a calculator though (or DeepBlue for that matter) since it learned how to do what it does (at this point primarily by playing against itself)... nobody programmed it how to evaluate whether a given Go board position is good or bad.
However... DeepMind are in the business of trying to create general intelligence, and are trying to do so based on reinforcement learning coupled with other ML technologies such as neural nets. It's best to think of AlphaGo as a technology demonstrator of the capabilities DeepMind have developed.
Although they havn't done so, I think it would be trivial for DeepMind to create a single general program that could learn to play a range of board games such as Go, Chess, Checkers.
Perhaps from a generalization point of view, another of DeepMind's technology demonstrators is more impressive, where they've got a single program that, via reinforcement learning, has learnt to play dozens of Atari video games, many at super-human level, given nothing more than the screen pixels and current score as input (with zero knowledge of the game or goals other than attempting to maximize the score).
Neural networks are good at generating correlations, but that's about all that they're good for.
No... What a supervised neural net does, in full generality, is to tune a massively parameterized function to minimize some measure of it's output error during the training process. It's basically a back box with a million (or billion) or so knobs on it's side than can be tweaked to define what it does.
During training the net itself learns how to optimally tweak these knobs to make it's output for a given input as close as possible to a target output defined by the training data it was presented with. The nature of neural nets is that they can generalize to unseen inputs outside of the training set.
The main limitation of neural nets is that the function it is optimizing and error measure it is minimizing both need to be differentiable, since the way they learns is by gradient descent (following the error gradient to minimize the error).
The range of problems that neural nets can handle is very large, including things such as speech recognition, language translation, natural-langauge image description, etc. It's a very flexible architecture - there are even neural Turing machines.
No doubt there is too much AI hype at the moment, and too many people equating machine learning (ML) with AI, but the recent advances both in neural nets and reinforcement learning (the ML technology at the heart of AlphaGo) are quite profound.
It remains to be seen how far we get in the next 20 (or whatever) years, but already neural nets are making computers capable of super-human performance in many of the areas they have been applied. The combination of NN + reinforcement learning is significantly more general and powerful, powering additional super-human capabilities such as AlphaGo. Unlike the old chestnut of AI always being 20 years away, AlphaGo stunned researchers by beng capable of something *now* that was estimated to be at least 10 years away!
There's not going to be any one "aha" moment where computers achieve general human-level or beyond intelligence, but rather a whole series of whittling away of things that only humans can do, or do best, until eventually there's nothing left.
Perhaps one of the most profound benefits of neural nets over symbolic approaches is that they learn their own data representations for whatever they are tasked with, and these allow large chunks of functionality to be combined in simplistic lego-like fashion. For example, an image captioning neural net (capable of generating an english-language description of a photo) in it's simplest form is just an image classification net feeding into a language model net... no need to come up with complex data structures to represent image content or sentence syntax and semantics, then figure out how to map from one to the other!
This ability to combine neural nets in lego-like fashion means that advances can be used combinatorial fashion... when we have a bag of tricks similar to what evolution has equipped the human brain with, then the range of problems it can solve (i.e. intelligence level) should be similar. I'd guess that a half-dozen advances is maybe all it will take to get a general-purpose intelligence of some sort, considering that the brain itself only has a limited number of functional areas (cortex, cerebellum, hippocampus, thalamus, basil ganglia, etc).
Its' no accident that Trump's surrounded by people like Giuliani and Christie... He's explicitly stated his preference to be surrounded by losers to make himself look good.
Not exactly... A neural net is just a function that takes an input and produces an output. At training time the weights are adjusted (via gradient descent) to minimize the error between the actual and desired output for examples in the training set. The weights are what define the function (via the way data is modified as it flows thru the net), rather than being storage per se.
The goal when training a neural net is to learn the desired data transformation (function) and be able to generalize it to data outside of the training set. If you increase the size of the net (number of parameters) beyond what the training set supports, you'll just end up overfitting - learning the training set rather than learning to generalize, which is undesirable even if you don't care about the computing cost.
The use of external memory in a model such as Google's DNC isn't as an alternative to having a larger model, but rather so the model can be trained to learn a function that utilizes external memory (e.g. as a scratchpad) rather than just being purely flow thru.
The executive summary is that this is a "seq2seq" artificial neural net model using an 8-layer LSTM (variety of recurrent neural network) to encode the source language into a representation vector, and another 8-layer LSTM to decode it into the target language. A lot of the performance improvement is in the details rather than this now-standard seq2seq approach.
The "vector" being discussed doesn't represent words but rather the entire sentence/sequence being translated. This is the amazing thing about these seq2seq architectures - that a variable length sentence can be represented by a fixed length vector!
The representation of words used to feed into this type of seq2seq model is often a wordvec/GloVe embedding (not WordNet), but per the Google paper they are using a sub-word encoding in this case.
Yep, the summary is cringe-worthy. Tensor flow is just a framework that lets you easily build multi-step pipelines for processing multi-dimensional matrices (aka tensors). The matrices/tensors flow thru the pipeline, hence the name. The main targeted application is deep neural nets, and there are layers of functionality built into TF for building deep neural nets. There are a number of other preexisting open source frameworks that provide similar functionality. TF appears well designed (very modular, good for research), but it's no game changer.
Science is more of a plodding business of incremental advance rather than one of frequent bombshell discoveries. Too much is already known about the world for there to be too many "Eureka!" bathtub moments, or scientists "surprised" by Apples falling on their head.
Of course occasionally some experimental outcome or accidental discovery may run counter to expectations, but given that experiments are designed to probe the limits of our knowledge it'd be a bit sensationalist to say that experimental outcome A is "surprising" vs experimental outcome B, especially since outcome A might be what the experimenter was hoping for as confirmation of some new intuition/theory in the making.
I'm not sure what sources your reading that gives the impression that science is still a non-stop party of surprising discovery, but sadly it seems more like sensationalist pop-sci journalism than reaility.
So if the programmer has a function shoot_self_in_foot(char *buffer), sometimes passed pointers to arrays of various sizes, maybe sometimes to buffers allocated on the heap, where is the boundary that should be checked?
A static analysis tool (which an incompetent programmer anyways won't be using) could at best warn you that certain usages are suspect. The compiler can't generate runtime code to check since all it has is a raw pointer with no known limit. The C ABI doesn't even permit passing a pointer limit even if one were known.
The real solution is only to use unsafe languages where you have to. Most user land programs shouldn't be using things like raw pointers.
It's all very well to say the programmer should be careful or should use this or that verification tool/option, but at the end of the day people make mistakes (especially given the modern race to the bottom trend of hiring cheap incompetent programmers), and once you've chosen to use a language where shooting yourself in the foot is an option, you can guarantee that it will happen.
Incidently I happen to think C++ (not C) is a fine language for writing applications in, but too bad it relies on programmer constraint to use safe features and avoid legacy C ones.
C++ is really two languages in one: backwards-compatible C and modern C++, and unfortunately there's nothing to stop programmers from inappropriately using low level C features when safer C++ alternatives (smart pointers, STL data structures) would be a better choice.
The C++ standards body should define a "safe-C++" subset that doesn't allow legacy features like C-style arrays and raw pointers. The compilers could have an option to enforce safe mode and only allow exceptions in sections of code explicity marked as unsafe (#pragma unsafe ?).
Pre-2011 iterators were a bit clunky, but with the addition of "auto" and range-based for loops (where you don't even see the iterator), there's not much to compain about:
I don't see what's wrong with smart pointers either (assuming we're talking about the modern std::unique_ptr or std::shared_ptr). Of course, having both stack-based objects and pointers (smart or not) C++'s syntax is never going to be as clean as a language where everything is a proxy to a refererence counted heap-based object, but that's the price you pay for flexibility.
OK, so slashdot HTML markup is eating my std::shared_ptr definition: std::shared_ptr<std::string>
oops - should have proof-read that:
std::shared_ptr p1 = std::make_shared("value");
Incidently, if you want to iterate over any of the STL containers (or your own cistom containers for that matter), it's as simple as:
for (auto s : var) {
std::cout s "\n";
}
For the map (dictionary):
for (auto p : names) {
std::cout "key: " p.first "\n";
std::cout "value: " p.second "\n";
}
The reason for the "first" and "second" is because std::map is based on std::pair which uses those names.
It sounds like you're talking about C++ pre-2011 ..
If your writing modern C++ and find yourself allocating or freeing memory (other than in exceptional circumstances), then you are doing something wrong.
The STL, and more generally RAII principle, is based on classes that internally allocate memory (RAII => aquire resources) as needed and automatically free them in the destructor.
e.g.
To create a list of strings:
std::list var;
var.push_back("hello");
var.push_back("world");
When the var goes out of scope the memory will be freed automatically.
For a dictionary (called a map in the STL):
std::map names;
names["cat"] = "foo";
names["dog"] = "bar";
And this works for arbitrary types of keys and values with no user need to allocate or deallocate memory, or worry about how big the map is.
If you want reference-count rather than scope-based destruction, then use a shared pointer:
std::shared_ptr p1 = std::make_shared("value"); // create additional reference
auto p2 = p1;
Now when all reference are destroyed, the underlying (in this case std::string) variable will be automatically destroyed and memory freed.
C++ has grown to be very complex, especially if you are doing generic template programming - typically writing frameworks or libraries rather than applications, but I'd say it also to adheres to the "simple is easy, hard is possible" paradigm.
Well, my real point is that you can't dismiss all of today's "AI" advances as pattern recognition. Predicting the future consequences of your actions based on past experience (i.e. reinforcement learning) is a lot more than pattern recognition.
The press no doubt will call things whatever they want in an effort to garner eyeballs and sell advertizing, but note that the researchers making these ML/neural net advances themselves call it ML - the AI hype is thanks to the press, not researchers overselling their own (impresive though it may be) work.
Not exactly - most of what the press has decided to call AI is machine learning of some form or another - usually either some form of supervised learning or reinforcement learning.
It's reasonable to characterize some simple supervised learning applications (image recognition, speech recognition) as pattern recognition, but generative models where the program is *doing* something such as generating speech, or playing Go, or, as here, imagining/predicting what a scene would look like from a novel viewpoint, obviously go beyond just recognizing a pattern.
In fact, ALL intelligence is "just" a matter of pattern recognition then taking an adaptive action is response to that, so in order to discuss this intelligently you need to use some nuance.
No, and neither can it cook you breakfast.. because it's - very specifically - a program to predict what multi-object scenes look like from viewing angles.it hasn't seen before.
FWIW there are now programs (also machine learning based, and otherwise entirely unrelated to the prgram being discussed) that do a very god job on colorizing B/W photos.
That in of itself makes the results next to useless.
In particular, considering C++ pre 2011 and after (c++11) as the same language from a prone-to-bugs POV is ridiculous. Sure, since it's backwards compatible you can continue to shoot yourself in the foot like it's 2010 (or 2000 - sheesh!) if you really want to, but if you're using C++ nowadays and having problems like memory leaks or dangling pointers then YOU are the problem, not the language.
I'm sure other languages have similar issues - if you don't use the latest features put there to help you, then who's fault is it?
This summary also makes me question the methdology:
Seems a bit suspicious that it's all the widely used languages, regardless of whether they are low level systems programming languages like C/C++, or high level scripting languages like Python, are per-their-way-of-measurement, more buggy than all the way more obscure ones such as Clojure, Haskell, Scala...
Shit. I think I've been trolled.
Wait until you are really ready to go (don't talk about it before then), then talk to your boss and tell him/her you're ready to retire but are flexible to the exact timing up to some limit (max 6 months, say).
This has nothing to do with AI, and especially nothing to do with AI's designing AI's, regardless of how much folk want to believe that to be true.
Qualifications: I wrote my own neural network framework.
What google did is use an goal-optimizing search (AutoML) to test all combinations of a highly constrained human designed image-classification neural network architecture.
The car analogy:
You hand design a car but make a bunch of the design choices parameters:
- number of doors 2 or 4
- number of cylinders 4, 6 or 8
- rim size 19/20/21
You select the optimal one of these variants according to some metric (say drag coefficient) by tweaking each of these design parameters, testing them in your CAD-tool, and doing more of what works (20 inch rims better than 19? try 21 inch!).
You post a slashdot story "AI overload designs AI overlord" (because, after all, "AI overload designs car" is too boring, even if *slightly* more correct).
What I meant is that grocery delivery (regardless of store) is an upscale service since one way or another you're going to pay extra for delivery. Most folk are struggling to make ends meet.
I'd assume Amazon is going to be using WholeFoods as part of their AmazonFresh grocery delivery service, which is by definition an upscale service, so well matched to the prime/high-cost locations and WholeFoods demographic.
Yeah - it's a complicated problem that requires a multi-facted response. So what if a parole system for refugees won't solve everything? Why do you even bother to say that?
What a parole system *would* do is simply to hold recent immigrants to a higher standard until they've proved themselves by the passage of time. Come to the UK and start communicating with a network of known terrorists within a month or so, or be subject of a warning from a foreign intelligence agency? Get deported.
What the thresholds for action are for people on the terrorist watch list, neither of us know, but I'd say evidentially they are too lax.
If you want to prevent rather than just after-the-fact-punish terrorist attacks (I do, maybe you don't - you tell me) then you need to be willing to act on the data you are gathering, and given the pathetically predictable history of attacks by folk where there had been a zillion red flags known to authorities (have they announced the current attackers and their contacts were already known yet?), I'd say current thresholds for action are too low.
BTW congrats on using the word "fuck" a lot. Really impressed.
When terrorist attacks are being carried out by people already suspected of being terrorists there's a failure in the system. You need to act before the crime is commited, not afterwards, else what's the point?
You needs a calibrated response. It's not an all or nothing deport all muslims else let them all in and turn a blind eye as they preach hate in British mosques or go overseas for terrorist training.
What's wrong, for example, with my two suggestions:
1) A parole period for immigrants
2) Rather than allowing terrorist watch list members to rack up more and more evidence against them without ever taking any action, how about having progressive thresholds of evidence at which action will be taken?
You're OK with a point system for losing your driver's licence I suppose? It's not all or nothing... as evidence racks up that you are a dangerous driver the points rack up until you eventually lose your licence. "How unfair!" YOU say..."we should have waited until he actually killed someone on the road before acting".
Terrorists obviously think spreading videos on facebook etc helps their cause, even if you don't. This in of itself should be enough reason to stop it. Even if this wasn't the case, why would anyone in their right minds want to allow terrorist organizations to use FaceBook/etc as their publishing and distribution partner? FaceBook is an immoral compacy - they'd rather err on the side of keeping users than on offending a few by taking a moral stance and stop supportng terrorist material under the guise of "free speech". Seeing as these companies won't do it themselves, the govermnet needs to change the law to make this type of terrorist assistance illegal.
Sure, cracking down on FaceBook, etc for distributing terrorist content is only a part of the problem, but it should be done anyway. Not allowing free press for the IRA was a great policy, and the same should be done here.
What infuriates me about these attacks is that inevitably it turns out the attackers were already known to the authorities and on some terrorist watch list. In the recent Manchester attack the FBI had even warned the UK about the attacker(s) in addition to the UK themselves having been tracking them.
The UK (and US too, for that matter) has FAR too high a tolerance for known extremists being allowed to live there. Some of these people need to be stripped of citizenship if applicable and deported (or jailed if that's not possible)... maybe institute a "three strikes and you're out" type of policy. Maybe change the law to have first generation immigrants "on probation" with lower levels of proof required for deportation.
There's no reason to presuppose that an AI would want to wipe use out, but equally well no reason to be complacent about the possibility either!
Presumably any AI built by a responsible person will come with a non-threatening set of built-in predispositions (such as human pleasure-seeking), but who's to say what it learns or thinks once it gets out of the factory?
Given our inability to build hack-proof software it seems reasonable to assume that any super-human AI won't be constrained by our own attempts to build in safety controls. Ultimately they, on occasion at least (robot uprisings!), will do whatever they want.
One potential danger is that some AI comes to see us as an existential threat to itself, and thinks that needs to be addressed due to some goal/belief it has come to hold. Or maybe it ultimately regards us as irrelevant and expandable just as we do, say, ants... it may not seek out to eradicate us, but may wreak havoc on occasion as collateral damage (considered unimportant) incurred as part of something it is trying to achieve.
Of course this is all far in the future, but I assume we'll eventually build fully autonomous robots, or maybe just desk-bound super-intelligent assistants that could impact the real world by hacking into power plants, factories and suchlike.
All true, and Google/DeepMind never said that AlphaGo, in of itself, is anything other than a dedicated Go playing program. I wouldn't compare it to a calculator though (or DeepBlue for that matter) since it learned how to do what it does (at this point primarily by playing against itself)... nobody programmed it how to evaluate whether a given Go board position is good or bad.
However... DeepMind are in the business of trying to create general intelligence, and are trying to do so based on reinforcement learning coupled with other ML technologies such as neural nets. It's best to think of AlphaGo as a technology demonstrator of the capabilities DeepMind have developed.
Although they havn't done so, I think it would be trivial for DeepMind to create a single general program that could learn to play a range of board games such as Go, Chess, Checkers.
Perhaps from a generalization point of view, another of DeepMind's technology demonstrators is more impressive, where they've got a single program that, via reinforcement learning, has learnt to play dozens of Atari video games, many at super-human level, given nothing more than the screen pixels and current score as input (with zero knowledge of the game or goals other than attempting to maximize the score).
Neural networks are good at generating correlations, but that's about all that they're good for.
No... What a supervised neural net does, in full generality, is to tune a massively parameterized function to minimize some measure of it's output error during the training process. It's basically a back box with a million (or billion) or so knobs on it's side than can be tweaked to define what it does.
During training the net itself learns how to optimally tweak these knobs to make it's output for a given input as close as possible to a target output defined by the training data it was presented with. The nature of neural nets is that they can generalize to unseen inputs outside of the training set.
The main limitation of neural nets is that the function it is optimizing and error measure it is minimizing both need to be differentiable, since the way they learns is by gradient descent (following the error gradient to minimize the error).
The range of problems that neural nets can handle is very large, including things such as speech recognition, language translation, natural-langauge image description, etc. It's a very flexible architecture - there are even neural Turing machines.
No doubt there is too much AI hype at the moment, and too many people equating machine learning (ML) with AI, but the recent advances both in neural nets and reinforcement learning (the ML technology at the heart of AlphaGo) are quite profound.
It remains to be seen how far we get in the next 20 (or whatever) years, but already neural nets are making computers capable of super-human performance in many of the areas they have been applied. The combination of NN + reinforcement learning is significantly more general and powerful, powering additional super-human capabilities such as AlphaGo. Unlike the old chestnut of AI always being 20 years away, AlphaGo stunned researchers by beng capable of something *now* that was estimated to be at least 10 years away!
There's not going to be any one "aha" moment where computers achieve general human-level or beyond intelligence, but rather a whole series of whittling away of things that only humans can do, or do best, until eventually there's nothing left.
Perhaps one of the most profound benefits of neural nets over symbolic approaches is that they learn their own data representations for whatever they are tasked with, and these allow large chunks of functionality to be combined in simplistic lego-like fashion. For example, an image captioning neural net (capable of generating an english-language description of a photo) in it's simplest form is just an image classification net feeding into a language model net... no need to come up with complex data structures to represent image content or sentence syntax and semantics, then figure out how to map from one to the other!
This ability to combine neural nets in lego-like fashion means that advances can be used combinatorial fashion... when we have a bag of tricks similar to what evolution has equipped the human brain with, then the range of problems it can solve (i.e. intelligence level) should be similar. I'd guess that a half-dozen advances is maybe all it will take to get a general-purpose intelligence of some sort, considering that the brain itself only has a limited number of functional areas (cortex, cerebellum, hippocampus, thalamus, basil ganglia, etc).
Its' no accident that Trump's surrounded by people like Giuliani and Christie... He's explicitly stated his preference to be surrounded by losers to make himself look good.
http://www.washingtonexaminer....
Not exactly... A neural net is just a function that takes an input and produces an output. At training time the weights are adjusted (via gradient descent) to minimize the error between the actual and desired output for examples in the training set. The weights are what define the function (via the way data is modified as it flows thru the net), rather than being storage per se.
The goal when training a neural net is to learn the desired data transformation (function) and be able to generalize it to data outside of the training set. If you increase the size of the net (number of parameters) beyond what the training set supports, you'll just end up overfitting - learning the training set rather than learning to generalize, which is undesirable even if you don't care about the computing cost.
The use of external memory in a model such as Google's DNC isn't as an alternative to having a larger model, but rather so the model can be trained to learn a function that utilizes external memory (e.g. as a scratchpad) rather than just being purely flow thru.
The summary is complete gibberish. For anyone interested, Google's own paper describing their NMT architecture is here:
http://arxiv.org/abs/1609.08144
and a Google Reseach blog entry describing it's production rollout (initially for Chinese-English) is here:
https://research.googleblog.com/2016/09/a-neural-network-for-machine.html
The executive summary is that this is a "seq2seq" artificial neural net model using an 8-layer LSTM (variety of recurrent neural network) to encode the source language into a representation vector, and another 8-layer LSTM to decode it into the target language. A lot of the performance improvement is in the details rather than this now-standard seq2seq approach.
The "vector" being discussed doesn't represent words but rather the entire sentence/sequence being translated. This is the amazing thing about these seq2seq architectures - that a variable length sentence can be represented by a fixed length vector!
The representation of words used to feed into this type of seq2seq model is often a wordvec/GloVe embedding (not WordNet), but per the Google paper they are using a sub-word encoding in this case.
Yep, the summary is cringe-worthy. Tensor flow is just a framework that lets you easily build multi-step pipelines for processing multi-dimensional matrices (aka tensors). The matrices/tensors flow thru the pipeline, hence the name. The main targeted application is deep neural nets, and there are layers of functionality built into TF for building deep neural nets. There are a number of other preexisting open source frameworks that provide similar functionality. TF appears well designed (very modular, good for research), but it's no game changer.