You can do this "for free" with JSON.deserializeUntyped:
Map<String, Object> values = (Map<String, Object>)JSON.deserializeUntyped(fields);
System.debug(values.get('Title')); // 'Name';
System.debug(values.get('Product_type')); // 'IsActive';
Other approaches are possible. For example, if you know all values will be strings:
Map<String, String> values = (Map<String, String>)JSON.deserialize(fields, Map<String, String>.class);
System.debug(values.get('Title')); // 'Name';
System.debug(values.get('Product_type')); // 'IsActive';
You can use almost any kind of primitive in complicated ways if you know the final results will parse out that way.