Bachelorarbeit

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Bachelorarbeit
Ich schreibe aktuell meine Bachelorarbeit am Lehrstuhl 5 für Mustererkennung, ich kann aber momentan nicht gut einschätzen, wie Bachelorarbeiten hier im Allgemeinen aussehen. Sind irgendwo Bachelorarbeiten früherer Studenten zum Anschauen abgelegt (idealerweise auch mit Note/Kommentar)?
Mir würde es sehr helfen zu sehen, was zum Beispiel eine gute Bachelorarbeit ausmacht. Vielen Dank im Vorraus.
Meine Bachelorarbeit ist rein experimentell, ich arbeite hier ein Problem aus der Radiologie und einen Datensatz und soll das mit Deep Learning Methoden bearbeiten.


Hm hast du jetzt eine Bachenorarbeit oder nicht?

Hast du mal deinen Betreuer gefragt? Ar beiten sind in der Regel nicht öffentlich auch wenn man gelegentlich welche findet. Eine Note wirst du aber sicherlich nie sehen.

1 „Gefällt mir“

Wenn man herumklickt findet man natuerlich ein paar

https://www4.cs.fau.de/Ausarbeitung/BA-I4-2015-Plagwitz.pdf
https://static.siccegge.de/pdfs/bachelor-thesis.pdf
http://thorsten-wissmann.de/theses/bachelor-thesis-wissmann.pdf

1 „Gefällt mir“

Frag lieber deinen Betreuer, ob er mal einen Entwurf gegenlesen möchte und was du noch verbessern könntest. Er hat Domänenwissen und -präferenzen, die natürlich auch in die Beurteilung einer guten Arbeit einfließen.

Mit manchen Professoren ist es gang und gäbe Entwürfe von Arbeiten zu iterieren, bis er nichts mehr groß ankreidet :slight_smile: (Ich bezweifle, dass es je einen Fixpunkt gibt :D)

2 „Gefällt mir“

[quote=Marcel[Inf]]
Frag lieber deinen Betreuer, ob er mal einen Entwurf gegenlesen möchte und was du noch verbessern könntest. Er hat Domänenwissen und -präferenzen, die natürlich auch in die Beurteilung einer guten Arbeit einfließen.

Mit manchen Professoren ist es gang und gäbe Entwürfe von Arbeiten zu iterieren, bis er nichts mehr groß ankreidet :slight_smile: (Ich bezweifle, dass es je einen Fixpunkt gibt :D)
[/quote]

In einem zwei-Betreuer-Setting wurde mir mal gesagt du bist fertig sobald Betreuer-A dich das ruckgaengi machen laesst was du gerade fuer Betreuer B eingebaut hast :wink:


@siccegge: Vielen Dank für die verlinkten Thesen! Auf den ersten Blick scheinen die eher weniger mit meinem Bereich zu tun zu haben, aber durchaus nützlich.

@Marcel: Mir geht es weniger um das Korrekturlesen, aber darum was so der generelle Anspruch ist. Prinzipiell an Themen oder Dingen, die ich tun kann, mangelt es nicht - neue Experimente und Auswertungen kann ich ja immer machen. An der Stelle muss man auch vorsichtig sein, sich nicht zuviel aufzuhalsen. Eigene Ideen haben ist gut, aber auch gefährlich…
Das mit dem Domänenwissen ist auch so eine Sache: Es gibt bedeutend mehr Paper, als da je einer lesen kann.

Ich bin auch sehr froh, dass ich keine Software schreiben muss… ich habe das in meinen ersten drei Berufsjahren gemacht und das hat mich nicht sonderlich begeistert…


Beim LME solltest du viele ältere Abschlussarbeiten unter /net/files finden.

Außerdem gibt es einige Richtlinien und auch ansonsten klare Vorstellungen, die von anderen Lehrstühlen abweichen. Eine Abschlussarbeit beim LME ohne Software zu schreiben? Früher ging sowas nicht. :huh:

2 „Gefällt mir“

Mit dem Domänenwissen musst du’s bei einer Bachelorarbeit normal nicht übertreiben. Eher kucken dass du eine vollständige Arbeit hast mit methode, ausreichend evaluation, und - nicht zu unterschätzen - das dann auch alles in der Arbeit steht. Denn das, was du am Ende nicht mehr in Text gießen kannst, bringt dir nicht viel. Keine Software schreiben wundert mich auch - nicht nur wegen der methode, die evaluation geht ja normal auch nicht manuell. Aber letztlich musst du vor allem deinen Betreuer überzeugen, der bei der Aufgabenstellung auch etwas vom Standardschema abweichen kann - dann sind allgemeine Tipps nicht mehr so hilfreich.

1 „Gefällt mir“

Vielen Dank L. F: Ant für deine Kommentar! Software habe ich da vielleicht etwas falsch verstanden: Ja, ich schreibe Code, der ist aber rein zweckorientiert: Ich habe z.b. ein bestimmtes Problem (die Daten haben das falsche Format etc.) und ich schreibe mir dann ein kleines Tool, das dann das Problem löst. Für mich klingt Software immer nach einem großen schönen Paket, das dann alles hat - man gibt das einem Kunden und der ist dann glücklich. (Das hält einen natürlich nicht davon ab, sich über die Projektarchitektur Gedanken zu machen, eventuell Doxygen/Sphinx für die Dokumentation zu verwenden, function call diagrams o.Ä. etc. anzufertigen, das ist aber nicht der Kern meiner Arbeit.)

Das mit der Evaluation bereitet mir aber in der Tat etwas Probleme: Z.b. ich habe Ergebnisse, dann ist die Frage, sind die Ergebnisse signifikant/aussagekräftig? Habe ich die rein zufällig erhalten? Kann ich sie reproduzieren? Wie sieht denn der Problemraum überhaupt aus? Wie verhalten sich die Ergebnisse, wenn ich sie wiederhole, hyperparemter tuning mache? Was ist denn das kleinste Modell, das mein Problem lösen kann (hier kann ich mir über die VC Dimension bzw. Rademacher Complexity Gedanken machen)

Man kann da nun schon noch deutlich mehr machen - bis hierhin habe ich aber noch nichts über die medizinische Seite, den Datensatz oder einzelne Modelle im Spezifischen geschrieben. Wenn man visualisieren und erklären kann, was ein Modell lernt, dann freuen sich Leute normalerweise auch…

Seit etwas mehr als einem Jahr arbeite ich auch in diesem Bereich, muss mir daher über dies Gedanken machen, mir ist da aber nicht klar, wie hoch die Erwartungen an eine Bachelorarbeit (eine gute/sehr gute Bachelorarbeit) sind.


Nur als Warnung: Es hält dich aber vielleicht von deiner Forschung ab. Wenn du damit viel Erfahrung hast und das mit sehr geringem Aufwand machen kannst, cool. (Einen gewissen Grad an „Kommentiertheit“ finde ich schon für mich selbst hilfreich, auf den würde ich nicht verzichten wollen.) Ansonsten ist das halt eher Arbeit für die Zeit nach deiner Arbeit - und da stellt sich die Frage, ob der Code überhaupt noch genutzt wird. Oft ist Forschung ja eher ein „proof of concept“. Ich halte mich gern ähnlich auf, indem ich den Code effizient implementiere. Für eine erste Machbarkeitsstudie ist das eigentlich nicht notwendig. (Um wirklich zu zeigen, dass der Algorithmus z.B. klinisch Anwendbar ist, spielt es irgendwann natürlich schon eine Rolle.)

Für Signifikanz gibt es Tests, im Internet gibt es ein paar Übersichten, wann man welchen Test verwendet.
Reproduzierbarkeit von Forschungsergebnissen ist wichtig. Bei Python wäre es da z.B. sinnvoll sämtliche verwendeten Libraries und deren Versionen zu loggen oder einfach die ganze Sandbox mit zu archivieren.
Wiederholbarkeit: Code solltest du möglichst so schreiben, dass du Zufallsfaktoren über Random Seeds kontrollieren kannst, sonst ist das natürlich nie reproduzierbar.

Gehört in die Arbeit, aber nur knapp - du bist ja an einem Informatiklehrstuhl und deine Leserschaft, also dein Betreuer, kennt die medizinische Seite vermutlich schon.

Jap, ist immer positiv wenn verstanden wird, was man tut bzw woran man dreht (modelländerung, warum du gerade an hyperparameter X drehst denn du kannst ja wegen Komplexität nicht alle variieren). Auch das kurz in der Arbeit erwähnen.


Einfach einen Python Package Manager verwenden wie pipenv oder poetry. Dann werden alle PyPI Dependencies in einer JSON-Datei mit Versionsnummer protokolliert.


Oder ne requirements.txt. Hauptsache irgendwie, aber nich im Repo ???


Tatsächlich ist die requirements.txt eine schlechtere Lösung i. Allg., da mit ihr kein Konzept von Lockfile von Packages existiert.
Du kannst in der Datei zwar sowas wie „xyz >= 1.0.0“ sagen, aber welche Version schlussendlich installiert wurde, sagt sie dir nicht. Deswegen benutzen Package Manager wie npm, pipenv oder bundler Lockfiles, in denen sowas gespeichert wird.

(Ich bin mir gerade nicht sicher, ob wenn du in der requirements.txt ausschließlich „=“-Beziehungen verwendest, es dann semantisch äquivalent zu einem Lockfile ist. Ich würde das bezweifeln, denn z. B. npm speichert auch genau die auswählten Dependencies der Dependencies. Wenn alle reflexiv-transitiven Dependencies ausschließlich „=“-Beziehungen verwenden, dann wäre es womöglich äquivalent.)

Auch ist es gar nicht so abwegig, in einer Archivversion auch alle Dependencies real mit zu speichern :slight_smile: Aber ja, nicht im Repo!