Optional parameters should be at the end of your parameter list (and any subsequent parameters after it should also be optional), e.g:
public MyAttribute(string Field1, string Field2, string Field3, string Field4 = "")
{
}
In that declaration, it is the last parameter that is optional and any parameters beyond it must also be optional. This is highlighted in the quote from MSDN:
Optional parameters are defined at the end of the parameter list, after any required parameters. If the caller provides an argument for any one of a succession of optional parameters, it must provide arguments for all preceding optional parameters. Comma-separated gaps in the argument list are not supported. For example, in the following code, instance method ExampleMethod is defined with one required and two optional parameters.