HN user

snrji

118 karma
Posts7
Comments81
View on HN

It's not only about the odds, but the expected return. That's the whole point of insurance, for instance. Having an accident under these circumstances is quite improbable, but in case it happened, the return would be massive. Actually, since it might be a matter of life or death, perhaps it doesn't even make sense to think about the expected utility, because it would be infinite.

This is the kind of ad-hoc PEP proposal that could be completely avoidable if there was a generic modifier or initialization/declaration construction for declaring a variable as constant. So incredibly simple, so incredibly useful that it's hard to believe that it hasn't been accepted yet (it was proposed).

When I was in college I was mystified by genetic algorithms, without knowing much about them. After taking 2 subjects on the matter and reading some books, I came to the conclusion that apart from being inherently inefficient (that's what you apply them when you have no alternative), they are actually outperformed by hill climbing (which can be seen as a particular case of the former if population = 1). Also, the crossover operator seems to make more harm than good, and it's not fully understood it's usefulness in nature, although there are some theories (this last point is taken from Pedro Domingos book).

I know, but isn't that what the OP was asking for? Isn't that an inherent tradeoff? Or: isn't that what Neuromorphic hardware and deep learning are about (ie. composing many relatively simple functions without complex branching/logic)?

Contrary to the belief of progressive billionaires, I think the reform of capitalism will come in form of local "soft socialism". Localism just makes sense and can be accepted by both left and right-wing people.

And why not the GPUs themselves? Which inherent limitations do they have? Aren't they essentially general purpose parallel devices?

Pytorch is amazing and Facebook's open source contributions to AI are great.

However, tooling for deep learning in general is not ready for industry grade technology. Many bugs could be prevented by dependent types, but compilers are not there. Also, debugging models feels like alchemy and random changes until it works. In addition, in production systems, rigorous testing is not a standard. The closest thing I have heard of is Tesla's data engine and AI system, they do have unit tests and a shadow mode. Of course big companies will have similar technologies for critical systems, but it's not as standardized as testing in software engineering.

By "eval" you can also mean the training subset. As I understood is at the code to evaluate the network at a given point with a given dataset. For instance, after epoch epoch, the model is evaluated for both training and validation (you see both losses)

As you said, the test subset should only be used at the very last.

People tend to do a hard distinction between symbolic AI and machine learning, but actually some machine learning algorithms are based on symbols (eg. decision trees and association rules build logical rules). I recommend Pedro Domingos book, The master algorithm, in which he describes the "5 machine learning tribes" (one of them is referred as "the symbolists") and advocates for a unification of different machine learning algorithms. He even proposes a particular instance of algorithm that would fulfill these criteria: Markov logic networks. He has developed an implementation, called Alchemy (https://alchemy.cs.washington.edu/).

If by symbolic AI we mean GOFAI, expert systems etc, I don't think that there will be ever a resurgence. But if by symbolic AI we mean machine learning algorithms that are somehow based on symbolic reasoning, I do think that there will be a resurgence. In particular, this resurgence will start when: a) Deep learning arrives to its limit (ie. research gets stuck) and/or b) Someone finds a scalable and SOTA-ish way to integrate symbols into gradient based algorithms.

It was not mainstream back then.

I agree that most popular dynamic are quite terrible. But, honestly, I think the real problem is not the particular implementations, but the whole idea of dynamic typing. At first it did make sense, but now that compiler writers have figured out "cheap" and general type inference, I don't see the point anymore.

However, I use Python on a daily basis because I have no decent alternative for the libraries I use.

The trend of adding type annotations to dynamically typed languages is now unstoppable. I wonder if some more exotic features (eg. side effects handling, monads or dependent types) will ever become mainstream in the feature.

Noob question: don't dependent typing requires the language to be dynamic? How do you check dependencies in types otherwise (eg. the size of an array)?

Couldn't disagree more. As you said, people do deserve protection, but who do you think that you are protecting when you protect languages? Exactly, when you protect a language you are protecting people who speak it. If you want to get rid of your native language, fine, but do not force other people to do so.