Topic outline

  • Understand the concepts and BRANCHES of AI

    • Artificial intelligence today is accurately known as narrow AI (or weak AI), it is non-sentient machine intelligence, typically designed to perform a narrow task (e.g. only facial recognition or only internet searches or only driving a car).

      However, the long-term goal of many researchers is to create an artificial general intelligence (AGI or strong AI) which is a machine with the ability to apply intelligence to any problem, rather than just one specific problem, typically meaning "at least as smart as a typical human".

      While narrow AI may outperform humans at whatever its specific task is, like playing chess or solving equations, AGI would outperform humans at nearly every cognitive task.

      The ultimate hypothetical goal is achieving superintelligence (ASI) which is far surpassing that of the brightest and most gifted human minds. Due to recursive self-improvement, superintelligence is expected to be a rapid outcome of creating artificial general intelligence. 

      Purely Reactive

      Reactive machines are basic in that they do not store ‘memories’ or use past experiences to determine future actions. They simply perceive the world and react to it. IBM’s Deep Blue, which defeated chess grandmaster Kasporov, is a reactive machine that sees the pieces on a chess board and reacts to them. It cannot refer to any of its prior experiences, and cannot improve with practice.

      Limited Memory

      Limited Memory machines can retain data for a short period of time. While they can use this data for a specific period of time, they cannot add it to a library of their experiences. Many self-driving cars use Limited Memory technology: they store data such as the recent speed of nearby cars, the distance of such cars, the speed limit, and other information that can help them navigate roads.

      Theory of Mind

      Psychology tells us that people have thoughts, emotions, memories, and mental models that drive their behaviour. Theory of Mind researchers hope to build computers that imitate our mental models, by forming representations about the world, and about other agents and entities in it. One goal of these researchers is to build computers that relate to humans and perceive human intelligence and how people’s emotions are impacted by events and the environment. While plenty of computers use models, a computer with a ‘mind’ does not yet exist. Examples like C-3PO R2-D2 from Star Wars Universe and Sonny in the 2004 film I, Robot

      Self-Awareness

      Self-aware machines are the stuff of science fiction, though many AI enthusiasts believe them to be the ultimate goal of AI development. Even if a machine can operate as a person does, for example by preserving itself, predicting its own needs and demands, and relating to others as an equal, the question of whether a machine can become truly self-aware, or ‘conscious’, is best left for philosophers. Examples like Eva in the 2015 movie Ex Machina and Synths in the 2015 TV
    Page: 1File: 1
  • Understand and implement Regression, Classification, and Clustering algorithms

    General AI

    • AIMA - Python implementation of algorithms from Russell and Norvig's 'Artificial Intelligence: A Modern Approach'

    • pyDatalog - Logic Programming engine in Python

    • SimpleAI - Python implementation of many of the artificial intelligence algorithms described on the book "Artificial Intelligence, a Modern Approach". It focuses on providing an easy to use, well documented and tested library.

    • EasyAI - Simple Python engine for two-players games with AI (Negamax, transposition tables, game solving).

    Machine Learning algorithm


    • GraphLab Create - An end-to-end Machine Learning platform with a Python front-end and C++ core. It allows you to do data engineering, build ML models, and deploy them. Key design principles: out-of-core computation, fast and robust learning algorithms, easy-to-use Python API, and fast deployment of arbitrary Python objects.

    • Feature Forge - A set of tools for creating and testing machine learning features, with a scikit-learn compatible API.

    • Orange - Open source data visualization and analysis for novice and experts. Data mining through visual programming or Python scripting. Components for machine learning. Extensions for bioinformatics and text mining. Packed with features for data analytics.

    • PyBrain - PyBrain is a modular Machine Learning Library for Python. Its goal is to offer flexible, easy-to-use yet still powerful algorithms for Machine Learning Tasks and a variety of predefined environments to test and compare your algorithms.

    • PyML - PyML is an interactive object oriented framework for machine learning written in Python. PyML focuses on SVMs and other kernel methods. It is supported on Linux and Mac OS X.

    • MlPy - mlpy makes extensive use of NumPy to provide fast N-dimensional array manipulation and easy integration of C code. The GNU Scientific Library ( GSL) is also required. It provides high level procedures that support, with few lines of code, the design of rich Data Analysis Protocols (DAPs) for preprocessing, clustering, predictive classification, regression and feature selection. Methods are available for feature weighting and ranking, data resampling, error evaluation and experiment landscaping.

    • Milk - Milk is a machine learning toolkit in Python. Its focus is on supervised classification with several classifiers available: SVMs (based on libsvm), k-NN, random forests, decision trees. It also performs feature selection. These classifiers can be combined in many ways to form different classification systems.

    • scikit-learn - scikit-learn is a Python module integrating classic machine learning algorithms in the tightly-knit world of scientific Python packages (numpy, scipy, matplotlib). It aims to provide simple and efficient solutions to learning problems that are accessible to everybody and reusable in various contexts: machine-learning as a versatile tool for science and engineering.

    • Shogun - The machine learning toolbox's focus is on large scale kernel methods and especially on Support Vector Machines (SVM) . It provides a generic SVM object interfacing to several different SVM implementations, among them the state of the art OCAS, Liblinear, LibSVM, SVMLight, SVMLin and GPDT. Each of the SVMs can be combined with a variety of kernels. The toolbox not only provides efficient implementations of the most common kernels, like the Linear, Polynomial, Gaussian and Sigmoid Kernel but also comes with a number of recent string kernels. SHOGUN is implemented in C++ and interfaces to Matlab(tm), R, Octave and Python and is proudly released as Machine Learning Open Source Software

    • MDP-Toolkit - Modular toolkit for Data Processing (MDP) is a Python data processing framework. From the user’s perspective, MDP is a collection of supervised and unsupervised learning algorithms and other data processing units that can be combined into data processing sequences and more complex feed-forward network architectures. From the scientific developer’s perspective, MDP is a modular framework, which can easily be expanded. The implementation of new algorithms is easy and intuitive. The new implemented units are then automatically integrated with the rest of the library. The base of available algorithms is steadily increasing and includes signal processing methods (Principal Component Analysis, Independent Component Analysis, Slow Feature Analysis), manifold learning methods ([Hessian] Locally Linear Embedding), several classifiers, probabilistic methods (Factor Analysis, RBM), data pre-processing methods, and many others.

    • LibSVM - LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification. A Python interface is available by by default.

    • Weka - Weka is a collection of machine learning algorithms for data mining tasks. The algorithms can either be applied directly to a dataset or called from your own Java code. Weka contains tools for data pre-processing, classification, regression, clustering, association rules, and visualization. It is also well-suited for developing new machine learning schemes. See here for a tutorial on using Weka from jython.

    • Monte - Monte (python) is a Python framework for building gradient based learning machines, like neural networks, conditional random fields, logistic regression, etc. Monte contains modules (that hold parameters, a cost-function and a gradient-function) and trainers (that can adapt a module's parameters by minimizing its cost-function on training data).

    • SOM - Self-Organizing Maps is a form of machine learning technique which employs unsupervised learning. It means that you don't need to explicitly tell the SOM about what to learn in the input data. It automatically learns the patterns in input data and organizes the data into different groups.

    • Yalign - Yalign is a friendly tool for extracting parallel sentences from comparable corpora..