Be the first to try a brand new demo of DeepPavlov Library!
DEEPPAVLOV PRODUCTS
Experience or perseverance? That's the question!
While the whole world is working remotely and spending "holidays" at home, it is necessary to devote as much time as possible to self-development. It seems that this is a good time to implement the ideas into reality. Our Dream Team thought about a productive pastime and decided to share our own experiences with you. Namely, to tell you the beginning of the path of improvement and give a couple of useful tips. Someone has been going to his/her dream since school times, but someone unexpectedly discovered a different world for himself and decided to immerse himself in it specifically. Dear readers, we are sure that there are among you who want to achieve something completely new. Perhaps you have been thinking about creating a bot, voice assistant, or just starting to study the field of NLP and can't figure out how to start for a long time. So read our article, get inspired and take the first steps to unrealistically cool ideas.
How it all began.

I did not want to do programming at all. I wanted to be a physicist. I went to the department of Aerophysics and Space Research. We had programming in C++,both in assembler and Mathlab, but not much. However, by the 4th year I realized that I would not need it in my life, no matter in science or not. Following my friend's advice , I began slowly to study Java. I had a breakthrough on August 31, 2016, onr my twentieth birthday. I was walking along the street and thinking about the "prisoner's dilemma", and the thought came to my mind - should I program it? I had been working on the code from morning till night for three days .Really I went to bed and thought to wake up as soon as possible in order to start programming again. Eventually, the results that I wanted were obtained. The dilemma was calculated. At that very moment, I definitely no longer doubted that I needed to program.

How was my way progressing to this profession?
First I went through a specialization from Johns Hopkins University of data science. I do not recommend starting with this, because there is the R language. It will be better to start with Python, because it is used much more often. I finished this specialization in February. In the same month, I began taking the course from DeepPavlov - deep learning in NLP. It was already in Python. I passed it. My coursework was devoted to quora question pairs. On April 10, it became clear to me that it's better to change the specialty. I wanted to study at the Yandex or Abbyy department, but I began my preparation for the entrance examination too late. The courses requirements were different from those I passed. In the end I could not pass the selection process there. However, there was another variant. The choice of the department was by pure accident: in the evening I was vk, and I saw that the Tinkoff department was gaining candidates for the job interview tomorrow. I came and passed. The exams were based on algorithms and mathematics. I just had to repeat some things in mathematics. They were requiring knowledge of a machine learning course (one-year course) and algorithms (semester) seriously on the Tinkoff. At Tinkoff and the physics laboratory, you can also distinguish courses with big data (courses there were 2 duplicate ones), text analysis, image analysis, software architecture.

I wrote a whole text about how I saw the difference between my new and old areas of activity in 2017, I can point out the link here separately. In two words, I do not notice any fundamental differences. And if you can't see the difference, why get less?

What is most important I can say.
If you think that in data science you will be better than where you are now - go and do, don't be afraid. There are a lot of people who have changed their areas of activity. (At my last job, for example, there were 3 people from the physics department at once, including me) There is a place, where to put your head, so you definitely won't lose the opportunity to put it somewhere.
I began to study data science with one of the simplest courses, which also introduces the basics of the Python language (a very simple and universal language that many libraries are written in for working with data). This is a joint course of Yandex on coursera. It will allow to introduce you to the basics of data-science and, generally, to get up to speed. A course from Konstantinov is also suitable.
By the way, all the courses are available for free now. So due to quarantine, this is a unique opportunity to develop quickly in this direction. Unfortunately, these courses cover only classical machine learning, and only slightly affect deep learning and neural networks. If everything is ok with English, I would advise you to be educated with the course from Stanford. It is an extremely useful course for understanding such important things as back propagation, overfitting and so on. Computer Vision also covers well. A little bit about it is below. To continue learning, you can decide in which direction you want to develop more.
Roughly speaking, there are three main areas:
  • work with language (Natural Language Processing)
  • image processing (Computer Vision)
  • Reinforcement learning
It so happened that I chose the first direction for myself, and I can talk about it best of all. Basically, many NLP courses are built on an excellent the Stanford course. Chris Manning teaches this course. He is the author of many famous works on language processing. So we can say that this is first-hand information. But if it's hard to motivate yourself to take courses on your own, you can pass with a group in the ODS community (open data science). Also, many courses are taking place now, which generally repeat and complement the program of this course in Russian, for example, a course from DeepPavlov. I highly recommend it.
You need to read articles and literature to understand the basics and the mathematics behind machine learning algorithms. I strongly recommend reading some books, for instance Bishop's classic pattern recognition and machine learning, deep learning from the famous Yoshua Bengio and Ian Goodfellow. They can be read in parallel with online or offline courses.
I started studying NLP in the 4-year undergraduate, when it came time to write my diploma. I chose the topic of diploma purely out of my interest, and then I didn't even program in Python.

What helped me at studying with Python:

  • It seems that all my friends, including myself, took this course to start doing something on Python;
  • the sites with simple tasks and their analysis for knowledge of Python;
  • people who already knew it.

Now about NLP and machine learning:

  • Before choosing a diploma topic, I took the course which was taught at my base. After that I became interested in NLP. Although the course is not new, it has changed a lot since then, even on the website of this course it is written about it. It helped me to understand the statistical approaches to the language.
  • I had an alternative course at the faculty of my choice from Vorontsov, which is also read in the SAD. It is not a course on NLP, but on classical machine learning algorithms, which is important to know if you are engaged in data analysis.
  • When I was writing my diploma, my supervisor advised me watched the Stanford course. To be honest, I studied only some parts of this course, because I already knew a lot from my database and the articles which I read for the diploma. But in DeepPavlov, as I understand, it was in high demand and even its analogue was made.There are links to lectures on our YouTube channel.
  • Regarding exactly how to write a bot, I will not advise anything, because I almost do not understand the engineering affairs of our agent.
Finally, what I would do differently and what I would advise:
  • You need a lot of practice, you need to write the codes as much as you can. Check with your "hands" what you heard at the lecture. It really works! I was solving specific tasks in order to understand both Python and NLP. That really helped me.
  • Hence, the best way to begin to understand is to take internships, participate in competitions and do projects for different courses. Of course, it's impossible during the quarantine.
  • I did not watch any lectures on neural networks (I mean pytorch or tensorflow courses). Now I think that it would be easier for me if I watched lectures instead of not trying to quickly teach something by the documentation.

Follow our news on the site and subscribe to Twitter. After all, the most interesting awaits you ahead!

10 April / 2020
Did you like this article?