It depends on what sort of "derivative" it is. Follow these two simple rules of thumb:
1. You can't change the license on other people's code.
2. Other people can't change the license on your code.
-----------
1.
If you fork an application licensed under the GPL, and you make some changes, the original code is still licensed under the GPL. You may not distribute it under the BSD or MIT licenses.
If your changes are big enough, you could maybe license just those under a more permissive license, but then your final product really has two licenses (see case #2).
-----------
2.
If you fork an application licensed under 3-clause BSD, and you copy code into it from both a GPL'd library and an MIT'd library. The application's code is still BSD'd, but your project itself is now derived a derived work of three separate projects (with three separate licenses), and you will need to obey all of them:
* You will need to include the licence text and copyright information of all three projects (required by GPL BSD MIT)
* You may not use the names of the original application's authors to endorse or promote your work (required by BSD). You may use the names of the GPL or MIT library authors (permitted by GPL MIT).
* Anyone who compiles binaries of your project, including yourself, will need to include the complete corresponding source code (required by GPL).
-----------
Note that there's a difference between having a choice between multiple licences (aka "dual-licensed", "multi-licensed") and having a codebase covered by multiple licenses.