\begin{tikzpicture}
  \tikzset{
    ->, % makes the edges directed
    >=Stealth, % makes the arrow heads bold
    node distance=5cm, % specifies the minimum distance between two nodes. Change if necessary.
    every state/.style={thick, fill=white}, % sets the properties for each ’state’ node
    initial text=$ $, % sets the text that appears on the start arrow
  }

\node[state, initial] (s0) {$s_0$};
\node[state, right of=s0] (s1) {$s_1$};
\node[state, accepting, right of=s1] (s2) {$s_2$};
\node[state, right of=s2] (s3) {$s_3$};

\draw (s0) edge[above] node{$a$} (s1);
\draw (s0) edge[bend left, above] node{$b$} (s3);
\draw (s1) edge[loop,below] node{a} (s1);
\draw (s1) edge[above] node{$b$} (s2);
\draw (s2) edge[loop,below] node{b} (s2);
\draw (s2) edge[above] node{$a$} (s3);
\draw (s3) edge[loop,above] node{a,b} (s3);

\end{tikzpicture}