[HN Gopher] Similarity Learning lacks a framework. So we built one
       ___________________________________________________________________
        
       Similarity Learning lacks a framework. So we built one
        
       Author : generall
       Score  : 55 points
       Date   : 2022-07-13 14:05 UTC (8 hours ago)
        
 (HTM) web link (blog.qdrant.tech)
 (TXT) w3m dump (blog.qdrant.tech)
        
       | dmos62 wrote:
       | I realise this is an overly-broad question, but any insight into
       | what's the state-of-art in Similarity Learning for article-type
       | text?
       | 
       | More specifically, I'm interested in deriving distances between
       | writing style, arguing style, etc.
        
         | generall wrote:
         | It is definitely possible to do, if you have a proper training
         | set. You would need to somehow give model a signal, that you
         | are interesting in e.g. arguing style specifically, and not the
         | topic of the text.
        
         | monatis wrote:
         | There's study here:
         | http://cs230.stanford.edu/projects_spring_2021/reports/57.pd...
         | 
         | Basically, you can collect text from different authors, then
         | you can use authors names as labels to train a similarity
         | learning with it. My suggestion would be finetune a Transformer
         | model with a specific head and an ArcFace loss.
        
       | usgroup wrote:
       | I'm familiar with metric learning within the Mahalanobis family
       | for kNN oriented applications . I'm not getting what use cases
       | this framework targets? Is it custom image search type stuff
       | which may benefit from fine tuning?
       | 
       | What is a realistic minimum viable dataset for an approach like
       | this? When is it not advisable? How does it compare to other more
       | basic approaches?
        
         | monatis wrote:
         | The main idea is to train a deep learning model to encode a
         | high-dimensional sample to a low-dimensional vector in a latent
         | space. Then it can be used in various downstream tasks such as
         | KNN applications, semantic search, multimodal retrieval,
         | recommendation systems, anomaly detection etc. It's not limited
         | to the image domain --it can be also audios, texts, videos, or
         | more specific entities such as authors, soccer players, songs
         | etc. The size of the dataset can be thought of being similar to
         | other deep learning methods, but you can make a choice among
         | various similarity learning methods based on the size of your
         | dataset or according to whether it's labeled or not. A common
         | approach is (1) to train a base model by using a self-
         | supervised method with a bulk amount of unlabeled data and (2)
         | to finetune it on a more specific domain or task with a smaller
         | labeled dataset. If you can start with a pretrained model such
         | as ResNet or BERT, you can skip the first step.
        
           | usgroup wrote:
           | I'd be surprised if it'd be useful for something like cars or
           | soccer players, or really anything that may not have a
           | continuous mapping. I guess more generally whenever the
           | underlying "true" similarity function is not differentiable
           | -- categorical data springs to mind (cars, football
           | players...).
           | 
           | I could see it making sense for complex unstructured data --
           | Qdrant seems to point in that direction.
        
             | monatis wrote:
             | Some loss functions such as ArcFace loss and CosFace loss
             | enforce the encoder model to organize their latent space in
             | such a way that categories are placed with an angular
             | margin from one another. Thus the model implicitly learns a
             | continuous distance function.
             | 
             | Fun fact, one of the examples in Quaterion is for similar
             | cars search.
             | 
             | If you find this topic and want to discover more, we
             | collected a bunch of resources that might be helpful.
             | https://github.com/qdrant/awesome-metric-learning
        
         | usgroup wrote:
         | To answer my own question:
         | 
         | https://qdrant.tech/
        
       | mrintellectual wrote:
       | Great article. I've been working in and around this space since
       | 2014, and I think similarity learning, vector search, and
       | embedding management will be a core part of future applications
       | that leverage ML.
       | 
       | I recently built a similarity search application that recommends
       | new Pinterest users channels to follow based on liked images
       | using Milvus (https://github.com/milvus-io/milvus) as a backend.
       | Similarity learning is a huge part of it, and I'm glad more and
       | more tools like Quaterion are being released to help make this
       | kind of tech ubiquitous.
        
       | binbag wrote:
       | The title is written in a clickbait format. So I had to point it
       | out.
        
       | artex_xh wrote:
       | There is one https://github.com/jina-ai/finetuner pretty well-
       | designed and also gives SOTA performance from its docs
        
         | kacperlukawski wrote:
         | Unfortunately, it's no longer open source, but requires using
         | their cloud.
         | 
         | "From 0.5.0, Finetuner computing is hosted on Jina Cloud. THe
         | last local version is 0.4.1, one can install it via pip or
         | check out git tags/releases here."
        
           | artex_xh wrote:
           | but does being "opensource" naturally make a software good in
           | quality & performance? In the end, people try to solve a
           | problem right?
        
             | artex_xh wrote:
             | anyway, congrats on the release :P and I upvoted! so we are
             | good.
        
             | kacperlukawski wrote:
             | Of course, solving a problem is the most important thing at
             | the end of the day. However, there are some data privacy
             | constraints you may sometimes need to fulfil, and sending
             | the data to an external cloud, managed by 3rd party is not
             | an option.
             | 
             | Moreover, fine-tuning might be just one of the applications
             | of neural networks in the organization, and you may already
             | have some pipelines built to train them, so it should be
             | also unified.
             | 
             | And more importantly, Jina's finetuner gives you some
             | pretrained models to choose from, while Quaterion is
             | PyTorch Lightning based, so you can easily integrate it if
             | you already use PyTorch and have the flexibility to fine-
             | tune any custom network as well.
        
         | generall wrote:
         | Starting from 0.5.0 finetuner is no longer an open-source.
         | 
         | > From 0.5.0, Finetuner computing is hosted on Jina Cloud. The
         | last local version is 0.4.1, one can install it via pip or
         | check out git tags/releases here.
         | 
         | But there are some cool ideas implemented there as well, I
         | encourage you to try both!
        
       | nocturnal_pt wrote:
       | Is it somehow connected to Qdrant similarity search engine? Is
       | there a default integration for it?
        
         | generall wrote:
         | The idea is to fine-tune model, which can be used to produce
         | embeddings required for Qdrant. Our design approach is to make
         | things as modular as possible, so you can use framework and
         | engine independently. But we are working on integrating
         | components as well
        
       | flaviojuvenal wrote:
       | Not a full featured framework, but pytorch-metric-learning has
       | data loaders, lossess, etc. to facilitate similarity learning:
       | https://github.com/KevinMusgrave/pytorch-metric-learning
       | 
       | Disclaimer: I've made some contributions to it.
        
         | dimitry12 wrote:
         | Seconding this. PML is high quality, active, and well
         | documented.
        
           | generall wrote:
           | PML is a great collection of implementations, but not the
           | best framework. Also you can use PML with Quaterion: https://
           | github.com/qdrant/quaterion/blob/master/examples/tra...
        
       | vervez wrote:
       | Very cool. Can you comment on how this compares with tensorflow
       | similarity? https://blog.tensorflow.org/2021/09/introducing-
       | tensorflow-s...
        
         | monatis wrote:
         | I'm one of the authors of Quaterion and also a contributor of
         | TF Similarity. First of all, Quaterion is based on PyTorch.
         | From a more technical perspective, TF Similarity is currently
         | stronger on the self-supervised methods for images and lacks
         | some more generic losses while Quaterion puts a bigger emphasis
         | on finetuning models from any domain efficiently for practical
         | purposes. For example, Quaterion has a intermediate caching
         | mechanism that accelerates finetuning considerably. Overall,
         | They both do a good job for their own use cases.
        
       | dmos62 wrote:
       | Found the wiki article more useful in describing what Similarity
       | Learning and Metric Learning are:
       | https://en.wikipedia.org/wiki/Similarity_learning
        
       ___________________________________________________________________
       (page generated 2022-07-13 23:02 UTC)