• Stars
    star
    8,402
  • Rank 4,144 (Top 0.09 %)
  • Language
    C++
  • License
    Other
  • Created almost 15 years ago
  • Updated 4 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learning.

Vowpal Wabbit

Linux build status Windows build status

codecov Total Alerts

This is the Vowpal Wabbit fast online learning code.

Why Vowpal Wabbit?

Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learning. There is a specific focus on reinforcement learning with several contextual bandit algorithms implemented and the online nature lending to the problem well. Vowpal Wabbit is a destination for implementing and maturing state of the art algorithms with performance in mind.

  • Input Format. The input format for the learning algorithm is substantially more flexible than might be expected. Examples can have features consisting of free form text, which is interpreted in a bag-of-words way. There can even be multiple sets of free form text in different namespaces.
  • Speed. The learning algorithm is fast -- similar to the few other online algorithm implementations out there. There are several optimization algorithms available with the baseline being sparse gradient descent (GD) on a loss function.
  • Scalability. This is not the same as fast. Instead, the important characteristic here is that the memory footprint of the program is bounded independent of data. This means the training set is not loaded into main memory before learning starts. In addition, the size of the set of features is bounded independent of the amount of training data using the hashing trick.
  • Feature Interaction. Subsets of features can be internally paired so that the algorithm is linear in the cross-product of the subsets. This is useful for ranking problems. The alternative of explicitly expanding the features before feeding them into the learning algorithm can be both computation and space intensive, depending on how it's handled.

Visit the wiki to learn more.

Getting Started

For the most up to date instructions for getting started on Windows, MacOS or Linux please see the wiki. This includes:

More Repositories

1

reinforcement_learning

Interaction-side integration library for Reinforcement Learning loops: Predict, Log, [Learn,] Update
C++
72
star
2

coba

Contextual bandit benchmarking
Python
42
star
3

jupyter-notebooks

Vowpal Wabbit examples and tutorials
Jupyter Notebook
19
star
4

estimators

Estimators to perform off-policy evaluation
Python
12
star
5

py-vowpal-wabbit-next

Experimental new Python bindings for the VowpalWabbit library
Python
10
star
6

docker-images

Docker images used for continuous integration
Dockerfile
8
star
7

workshop

Jupyter Notebook
6
star
8

data-science

Python
4
star
9

rl_chain

Python
4
star
10

neurips2019

4
star
11

slates-experiments

Jupyter Notebook
4
star
12

docs

Genenerated documentation
HTML
3
star
13

slope-experiments

Python
3
star
14

vowpalwabbit.github.io

Official website of Vowpal Wabbit
HTML
3
star
15

icml2019

3
star
16

learn_to_pick

A python library for online learning in RL loops, specialized for Contextual Bandit scenarios. Choose actions from multiple options, evaluate decisions, and integrate feedback for improved future outcomes. Features versatile scoring, advanced featurization, and configurable learning policies.
Jupyter Notebook
2
star
17

ccb-experiments

C++
1
star
18

feature-broker

Mature software applications are highly componentized and have well-defined API boundaries among components. This structure leads to constraints making in-process inference challenging due to the difficulty of access to features. The FeatureBroker library presents a solution to this problem. This helped with adoption of VW in inference. We believe that this is a pervasive problem. The goal of open sourcing this library is to reduce the developer friction in adopting VW in software stacks that are built with these constraints.
1
star