Comments (2)
Thank you and I love this feedback! Would you mind helping me understand the suggestion better?
Previously I could think of two ways of drawing decision boundaries:
- (A) a direct way like in
human-learn
where the classifier literally follows the polygon (or any shape) you draw; - (B) an indirect way like currently in
hover
where you draw annotations and have a custom-architecture classifier fit to the annotations. Specifically, theactive_learning
recipe tries to learn the decision boundary given by the “train” set in an iterative “draw-and-retrain” process.- What I like about this is that one can make annotations from different views and easily combine them. The “manifold trajectory” slider of the
active_learning
recipe tries to interpolate between the input manifold and output manifold, giving multiple views to exploit.
- What I like about this is that one can make annotations from different views and easily combine them. The “manifold trajectory” slider of the
Just to be sure, my point of reference is the latest version of hover
(0.5.0). Let me know whether you are suggesting (A) or something else :)
from hover.
I think the logical extension to a tool like this is allowing someone to define their own decision boundary of a supervised model (they call this "machine teaching" rather than machine learning). Defining their own decision boundary should end up with them having a supervised classifier at the end and being able to visualize how that classifier operates (and ideally allowing an expert human to "tune" it). Note that this is different than the current "select aspects of the dataset by drawing" functionality built in.
Now that I think more about it, hover.recipes.active_learning
achieves “machine teaching” through hover.core.neural.VectorNet
, where one can attach “any” neural network (subject to matching dimensions with the vectorizer) after the vectorizer function.
So when starting from scratch, one can use active_learning
to draw decision boundaries through annotations and (re)train.
When working an existing model which may not be VectorNet
, I suggest first deciding which layers of the model to freeze and which layers to tune. Then you can convert to VectorNet
by wrapping the frozen part in vectorizer component and put the tunable part in the neural net component.
- Speaking of this, it’s worth considering to implement utility methods for converting
VectorNet
from/to “pure” PyTorch when applicable (i.e. when the vectorizer is essentially a preprocessor function followed by theforward()
of somenn.Module
).
Does this seem on the right track?
from hover.
Related Issues (20)
- Add support for higher dimensionality than 2 HOT 4
- Should vectorizer be limited to returning 1-D arrays only? HOT 1
- Rework rule-based labeling function mechanism HOT 1
- Getting GCC compile error for installation on MacOS HOT 10
- Checklist: 0.6.0 release
- Phase out soft label / denoising components HOT 2
- Checklist: 0.7.0 release HOT 1
- Scalable Recipe Tests
- Feedback on Quickstart HOT 3
- QuickStart via Docker Container HOT 19
- bulk labeling selection should automatically update "view selection" HOT 7
- multi labeling HOT 2
- Setting custom colors HOT 5
- hover configuration for constants HOT 7
- Session not accessible on browser refresh HOT 2
- Enable tooltips in selection table HOT 3
- Accepting Huggingface transformers HOT 2
- Add an FAQ page to the docs
- Associating non_feature data with feature_key HOT 3
- Use of semi-supervised fit step for Umap and ivis HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hover.