<p>You don't have to use a pretrained network in order to train a model for your task. However, in practice using a pretrained network and retraining it to your task/dataset is usually <strong>faster</strong> and often you end up with better models yielding <strong>higher accuracy</strong>. This is especially the case if you do not have a lot of training data.</p>

<p><strong>Why faster?</strong></p>

<p>It turns out that (relatively) independent of the dataset and target classes, the first couple of layers converge to similar results. This is due to the fact that low level layers usually act as edge, corner and other simple structure detectors. <a href="https://www.researchgate.net/profile/Jeff_Clune/publication/279068412/figure/fig2/AS:614020520349697@1523405308298/Visualization-of-example-features-of-eight-layers-of-a-deep-convolutional-neural.png" rel="nofollow noreferrer">Check out this example</a> that visualizes the structures that filters of different layers "react" to. Having already trained the lower layers, adapting the higher level layers to your use case is much faster.</p>

<p><strong>Why more accurate?</strong></p>

<p>This question is harder to answer. IMHO it is due to the fact that pretrained models that you use as basis for transfer learning were trained on massive datasets. This means that the knowledge acquired flows into your retrained network and will help you to find a better local minimum of your loss function.</p>

<p>If you are in the compfortable situation that you have a lot of training data you should probably train a model from scratch as the pretained model might "point you in the wrong direction".
In <a href="https://arxiv.org/abs/1610.05567" rel="nofollow noreferrer">this master thesis</a> you can find a bunch of tasks (small datasets, medium datasets, small semantical gap, large semantical gap) where 3 methods are compared : fine tuning, features extraction + SVM, from scratch. Fine tuning a model pretrained on Imagenet is almost always a better choice.</p>
Why I need pre-trained weight in transfer learning
<p>I'm learning transfer learning with some pre-trained models (vgg16, vgg19,…), and I wonder why I need to load pre-trained weight to train my own dataset. </p>

<p>I can understand if the classes in my dataset are included in the dataset that the pre-trained model is trained with. For example, VGG model was trained with 1000 classes in Imagenet dataset, and my model is to classify cat-dog, which are also in the Imagenet dataset. But here the classes in my dataset are not in this dataset. So how the pre-trained weight can help?</p>