2,464 karma · joined July 25, 2010
https://tali.link
https://twitter.com/taliesinb
https://www.youtube.com/watch?v=PSYXt3Xu3xI
I'm not a physicist, but he seems to be invoking similar ideas to Raamsdonk: that spacetime and gravity are emergent properties that boil down to entanglement somehow. But the loop quantum gravity people have been saying something like that for ages. And Stephen Wolfram and Konrad Zuse etc. And we have people like Lubos Motl on the other hand to ridicule all of the above.
Anyone able to give a big picture overview of what's been happening the last few years in this somewhat rarefied world? Who are we, the intelligent lay public, to trust?
Funny, I think I remember reading this paper when I was playing with a-life around 2009.
How did this Yale giant respond when you explained your concerns? And after you published?
It's a small part of Moloch but one idea that really stuck with me was that many of our defining societal threats and challenges are ultimately coordination problems, game theoretic tragedies. The Achilles heel of humanity it seems.
Just as a universal basic income is presented as one antidote to wealth inequality, the idea of universal genetic enhancement is presented, specifically of intelligence (whatever that is). If we assume it's a fait accompli that members of our elites will pursue genetic enhancement of intelligence for their children or themselves, what are the strongest consequentialist objections to the idea of free, universally-provided genetic enhancement, assuming such therapies are actually effective, practical, and safe?
One obvious objection is of a "Brave New World" variety: we have yet no idea how systematic selection to increase "g" (or any trait, for that matter), could stunt or enhance other traits, deplete valuable kinds of cognitive diversity we can't yet measure, or twist our values in some immeasurable and negative way.
Worse still, it's easy to imagine government scientists in more authoritarian societies stumbling on allele combinations that enhanced political docility, consumption-oriented behavior, thriftiness, and so on, and selecting for those in the next generation to solve demographic, economic, or political problems.
On the flip side of that fear is the hope that we could select for propensities that help us solve the daunting list of global co-ordination problems that now face us, climate change and dangerous AI being the two most generic ones. The consequences of failure there are so dire that we may even have reason to see such enhancement as necessary -- the equivalent of a species-level adrenaline shot to get us through an existential crisis.
And what if we could make ourselves less dishonest, manipulative, cynical, and tribalistic? What if we could design our values to be different from what they are, to be what we wished they were? That's much scarier for me, for reasons that are harder to explain. And it mirrors a bit the problems of building an self-enhancing AI that doesn't "diverge to evil".
I'm sure there's a rich seam of blogosphere material out there on these topics, maybe even some academic papers, would be very interested if someone is willing to share some links to specific arguments or discussions.
I understood the reasoning to be that to increase the range of accurately representable values in a circuit, you either need to increase the voltage or current used in an analog circuit (to achieve a certain accuracy versus a noise baseline), or devote more bits in a digital circuit. The first gives a linear dependence (or quadratic for I^2 losses) of power on range, the second logarithmic.
What would change with temperature that would require retraining? Are you saying the output of an op could depend sensitively on temperature, or that higher temperatures would increase things like thermal or shot noise? Why would the latter require retraining?
I was speaking loosely -- dropout is multiplicative Bernoulli noise on the hidden layers.
> That's not true. NNs don't like noise, there have been a lot of research done about effect of noise on NNs in the 90s. Random noise over a certain threshold will progressively degrade the performance of NNs, and below the threshold will have no effect.
I'd argue that dropout (and its predecessor in denoising autoencoders) are perfectly valid to see as noise, albeit multiplicative.
Of course, but the 'ideal' FET has zero gate capacitance, despite that being the way they work.
> Power is mainly lost via leakage (the smaller the transistor, the more it leaks), and via interconnect capacitance, which dominates all other capacitances in modern circuits.
Interconnect meaning things like the buses? There's no reason to want a von Neumann architecture for an analog chip. If that leaves leakage, I suppose an analog chip would be the beneficiary of needing a lot fewer transistors per op.
That's interesting. What would the circuit be?
> Digital NN will need lots of memory transfers to bring weights from RAM to ALU, and to store intermediate results.
That's not necessarily the case. Cellular neural networks were proposed long ago, for example, and they're digital -- how multiplication happens is independent from the data flow architecture.
> That's why a properly implemented analog NN will always consume much less power.
How do you know that the I^2 cost of operating in the linear regime isn't excessive? I'm totally ignorant on the matter -- I'd love to see a ballpark calculation to understand why it isn't important.
For example, dropout, which is almost ubiquitous for deep learning, basically makes activations 'wrong' 50% of the time during training.
That's true, I feel stupid for not having thought of that!
I'm not an electrical engineer, but with the FETs that modern Intel chips are using, what fraction of their power consumption comes from parasitic gate capacitance, versus other losses?
And if you operated in the linear region, what's the ballpark steady-state I_SD current you'd need on one FET to drive the gate of the next FET?
I think that's what this comes down to: if gate capacitance dominates other losses even in the linear regime, you still win by not having a clock and lots of digital transitions.
You could even imagine exploiting that: apply 'slow' augmentations of the input data that get you the equivalent of a bunch of iterations on a single example batch, while incurring a much smaller fraction of that initial cost because activations aren't going to change nearly as much as switching to a whole new example batch.
For me, the place we'll eventually end up is obviously custom deep learning / evaluation chips that perform analogue operations using transistors in their linear regime (like how op-amps work). These chips would be programmed merely to express the tensor operation graph, essentially analogue tensor FPGAs.
This should bring multiple order-of-magnitude reductions in power consumption and increases in evaluation speed. And when you don't have a clock there might also be interesting ways of dealing with time in which you don't discretize and unroll, like one currently does with GRUs or LSTMs.
It was totally captivating, somehow simultaneously moving and fascinating, in a way unlike any other film I've watched. Human is a good way to put it. Absolutely unforgettable, almost a religious experience.
I highly recommend his historical films to anyone, regardless of your interest or lack thereof in the subjects; you will become interested.
Well, if you care what the outcome is and you decide you want to see one party prevail, that doesn't turn you into a fanboy.
Because maybe there really are good guys and bad guys, or at least massively powerful overdogs who will crush entire underdog nations for realpolitikal advantage.
Look, Greece is fucked. Tsipras failed. Varoufakis failed. I like them, but they couldn't outwit Germany. The screwed up. They'll be remembered for that, just as Merkel will be remembered for destroying the founding principles of the EU.
I don't mean to say that this is any kind of tinderbox situation. But it is crystal clear to me that it's at the very least a first-world country being forced by a hegemon into neo-colonial vassal-hood/debt bondage, something that is quite shocking to see, especially when there are no standing armies in sight.
And the violence is real, in that Greece is suffering a humanitarian crisis that will only deepen. Actual people will die prematurely, and others' lives will be wrecked, for Schaeuble's example to pay off, as much as newspapers like to abstract this fact behind phrases like "deep pension cuts".
Those have been proposed by Syriza itself, but that hardly matters because the disagreement is not actually about economic policy, at all.
The salient features of the Eurogroup deal are things like: "give us $50 billion of your airports, bridges, government land, tourist attractions, etc, but at today's Depression-era prices". Shock doctrine stuff.
And: "take far more severe austerity, for the chance to negotiate another bailout you need to pay us back for the previous bailout, without debt relief being on the table, despite your population rejecting this option in the very recent past, despite the IMF concluding the current debt load is clearly massively unsustainable". Make that sound reasonable, please.
> It's been ~5 years since the first bailout, yet Greece haven't made much progress.
Could it be that the collapse of 25% of Greek GDP under the last 5 years of austerity demonstrates that more austerity isn't the answer? Some economist wise cracked that prescribing austerity for a country in a depression† is like trying to cure a sick patient with regular beatings.
† the worst depression of a modern state since the 1930s, incidentally.
> No wonder Germans get tired bankrolling all of Greece.
Hah, those generous German tax-payers. But wait, aren't they really bailing out German and French banks, at least indirectly, after the ECB gobbled up all that toxic peripheral debt that is was the predictable outcome of wild trade imbalances in an ill-thought-out monetary union? What fraction of Greek bailout money was just recycled into paying back the IMF and ECB? Do you know?
Do you know how loan sharks operate?
Here's an alternate perspective to jar you out of your slumber:
https://foreignpolicy.com/2015/02/20/its-time-to-kick-german...
Are there any other flavors of hallucination? Why all the dogs? I suppose ImageNet has a lot of dog varieties in its category list.
That's indeed what Module does, and it is indeed ugly and slow. When we add parse-time macros it'll be trivial to fix this.
For now, many people use Block instead, which does dynamic scoping and is a bit cheaper. I actually really like Block, because it gives you the convenience of a couple of globals that you don't require you to keep passing them along among your backend functions, but they're properly bound to the lifetime of your function (and are re-entrant etc).
Did you know that the frontend lets you double/triple/etc click to select outward up the AST? You can also press ctrl+period to do this. It's indeed not paredit, but you can do most paredity things using this single primitive and copy/paste, and it's not too painful (and it would only take a weekend to make a package that implements paredit).
Other than the lack of paredit, could you be more specific about the syntax isn't good? You can always use FullForm if you want to write things in an sexp way.
I think the equivalence between prefix form (f /@ x, f @ x, f @@ x), and FullForm (Map[x, y], f[x], Apply[f, x]), and postfix form (x // f) is a nice degree of freedom when beatifying code. Sames goes for composition (f /* g, or g @* f).
Functions tell a story and having to write that story in exactly one austere syntactic way is in my view a disadvantage for making the story clear and satisfying.
> * The interpreter is slow. Really slow. Sure, if you call a matrix math routine, it will be OK, but try rearranging large data structures and you'll end up waiting a lot.
I haven't done benchmarks recently but we're probably in the same ballpark as (C)Python. Maybe a bit slower. But if you'd consider using Python for a task it's also likely to be handled by Mathematica just fine. In many cases there is plenty-optimized C code doing the heavy lifting, like if you use our machine learning functions or anything with matrices (or vectors/lists, or tensors, or ByteArrays, or Images, or Graphs, or ... :) ).
As usual, interpreted languages can even win when they allow you to describe a computation at a high level, and have that be executed by some smart JIT compiler. Julia leads the way, of course, but we're working on similar things ourselves, particularly for Dataset (http://reference.wolfram.com/language/ref/Dataset.html).
> * Debugging support: what debugging support?
There is a built-in debugger in the frontend, under the "Debug" menu, that actually does a fair job of showing where in your expression the evaluator is at. I admit that I don't use it much, partly because I've got a much more ambitious prototype of a thing that produces a browseable execution history. Hopefully that's only a few point versions away, I just have such a crazy number of projects.. sigh.
> * The editor is a disaster. I seriously don't know how people can stand it and how come the company invests so little in it. A single mismatched bracket can mean ten minutes of hunting for the problem. Code jumps around on screen all the time, seemingly with no logic to it.
That's because you're probably using Input cells. Input cells are for one- or two-line inputs. Use Code cells for large bodies of code. They don't do automatic indenting and won't jump around. If you wish to complain that this isn't obvious enough, I entirely agree with you! It takes too long to discover the 'right way of doing things', which is a UX and design failing. And simple stuff like Tab on a selection of multiple lines doesn't work.
I use Eclipse (for which there is a plugin), or Sublime Text.
> Syntax highlighting is nearly non-existent.
Syntax highlighting isn't non-existent, at all. I'm not sure where you get that from. Some examples of things that are highlighted:
* Misspelled functions (functions without definitions are blue)
* Invalid numbers of function args
* Invalid options to functions (options=keyword parameters)
* Scoped variables for Block, Module, With, DynamicModule, Table, Do, etc
* Symbol shadowing (a variable in a Module shadowing another module, etc)
* Invalid graphics and typesetting and GUI elements
And beyond that, various little red arrows appear when you write something that couldn't parse.
> It's a complete trainwreck and I don't understand why this isn't seen by the company as a huge problem.
"Trainwreck" really seems hyperbolic. Whatever our faults, one of the things people tend to agree about is that we've innovated with the frontend, and others are only now catching up with IPython, Light table, etc.
And they have a long way to go. The frontend has reflow, a box language, cascading stylesheets, and something resembling FRP (though a bit less clean, perhaps). It's really not far off from HTML in its flexibility and power.
> Hash-maps: these were only added recently (!!!) and they are not what I'd expect in a modern language. For example, if you want to do a map lookup, and your keys aren't strings, you need to wrap them in Key[]. Come on.
Good thing we waited, though, if we had added associative arrays 15 years ago we wouldn't have had datastructures like HAMTs to achieve both immutability and efficiency.
I'm puzzled. Both the subvalue lookup (assoc[x]) and the Lookup function (Lookup[assoc, key, default]) don't require a Key wrapper, and those are the dominant ways to use associations. Key wrappers are only required when using e.g. Part, to distinguish e.g. the key All from the part spec All. What other behavior would you have wanted?
And design-wise, I actually think we nailed the design. There are all sorts of nice equivalences of the form Values[f[assoc]] === f[Values[assoc]] that give an association a well-defined 'kinematics' -- they are like ordinary numerically-indexed expressions (e.g. Part[f[a,b,c],2] is b), but the indices are now arbitrary expressions. That essentially forces your hand with respect to many existing functions, like Sort, Map, Partition, Take, Drop, and so on.
And that makes them seem cleaner than in many other languages, which mostly treat associative arrays as little more than bags of tuples (e.g. mapping over a hashmap in Clojure is not terribly useful or efficient).
Plus, the order-preserving is just nice, even if there is a performance cost.
> I find that I use Mathematica for a limited range of problems. If I could have Mathematica's library in Clojure with a graphical REPL, I'd pick that any day (Clojuratica is a project aiming for that).
Clojuratica was developed by a friend of mine. Sadly he's moved on to other things. It's pretty easy to build something similar on top of JLink, though, see http://reference.wolfram.com/language/JLink/tutorial/Writing...
If you're a big Clojure user you may be interested in Session -- https://medium.com/@kovasb/session-1a12997a5f70 -- that's a project by another friend of mine who used to work at Wolfram and now is an active member of the Clojure community.