Tracked File이란?

    • Unmodified/Modifed/Stage일 경우: 이 파일이 Git에 의해 관리가 되고 있다.
    • Untracked일 경우: 이 파일은 Git에 의해 관리가 안되고 있다. (= 방금 추가한 파일이거나 쓸모없는 파일임을 추측 가능)
    • Modified일 경우: 이 파일은 변경되었다. 변경되었다고 기록을 해야 한다.
    • Unmodified일 경우: 이 파일은 저번에 저장한 파일과 비교해보니 그대로이다.Git이 관리해주는 파일(Tracked File)은 다시 한번 더 파일의 상태를 3개의 상태로 세분화해서 관리합니다.
      1. Unmodified: 파일이 수정되지 않은 상태 (= 파일이 최근에 저장한 상태 그대로임)
      2. Modified: 파일이 수정된 상태 (= 파일이 최근에 저장한 파일과 달라짐)
      3. Staged: 파일을 저장할 예정인 상태 (= 이 파일을 저장할 것이라는 뜻)
      이러한 세분화된 상태들을 보고 우리들은 다음과 같은 정보를 알 수 있습니다.

Untracked File이란?

Untracked File은 이 파일이 Git 저장소에는 있지만 Git에 의해서 관리되고 있지 않은 파일입니다. Unmodified/Modifed/Stage이 세 가지 외의 상태는 모두 Untracked입니다. Untracked File은 삭제되든 변형이 일어나든 Git이 추적하고 있지 않기 때문에 손상되었을 때 Git으로 복구할 수 없습니다.

Git이 파일을 분류하는 방법에 대해서 알아봤습니다. 우리가 Git으로 관리되는 폴더에 넣어준 모든 파일은 이렇게 관리가 됩니다. 이제 이러한 Git이 분류해주는 파일의 상태를 확인하는 명령어를 배워봅시다.

add를 통해서 untracked 상태에서 벗어날 수 있다.


git commit -a -m “commit_name”

 

-a 는 auto adding이다. 하나하나 파일들을 add 하기 귀찮을 때 사용

이렇게 할 때 untracked된 파일은 commit 되지 않는다.

한번이라도 add를 한 tracked 된 파일에 대해서만 auto adding이 된다.

= git commit -am “commit_name”

 

add의 의미

  1. commit 대기 상태를 만든다.
  2. untracked를 tracked로 만든다

.gitignore

password나 오픈하면 안되는 정보들을 이 파일에 목록들을 저장해둔다.

여기에 들어가있는 곳은 기록된 파일들은 없는셈친다.

 

checkout은 head를 옮기고, reset은 head가 가리키는 branch를 옮긴다.

  • git reset —hard이전에 했던 commit으로 checkout하는 것과의 차이점은?취소를 한다고 하더라도 git은 삭제하지 않기 때문에 git reflog를 사용해서 삭제된 과거의 commit의 id로 갈 수 도 있다.

if(attached){

HEAD의 Branch가 움직임

} else {

== checkout

}

  • HEAD의 Branch가 움직임
  • git reset --hard COMMIT_ID로 Branch를 이동
  • check out은 시간여행이지 최근 작업물의 커밋을 지우지는 못한다.
  • 이 명령어를 사용해서 뒤의 주소로 이동하면서 commit을 취소할 수 있다.

branch를 만드는 것이 버리기 쉽기 때문에 branch 를 만드는게 유리하다.

 

git log —oneline -all -graph

⇒ git graph 없이도 git bash 창에서 그래프로 표현해줌

 

강의 복습 내용

recsys domain 1주차 강의 ml을 사용한 추천 시스템과 dnn을 활용한 추천시스템

이번주 논문 리뷰 'attention is all you need'

깃허브 특강 1일차

 

과제 수행 과정 / 결과물 정리

https://it-bejita.tistory.com/9

 

Attention is all you need

논문 주소 https://arxiv.org/pdf/1706.03762.pdf 참고 문헌 https://nlpinkorean.github.io/illustrated-transformer/ 코드 https://github.com/tensorflow/tensor2tensor 알아둘 단어 SOTA(State Of The Art) =..

it-bejita.tistory.com

https://it-bejita.tistory.com/10

 

[부스트캠프] Git hub 특강 1회차

연습 프로젝트 폴더를 만든다. git init 으로 저장소 생성 파일을 만들고 2개의 commit을 만든다. (git add “file name”, git commit -m “commit message”) 시간여행을 해보세요.(git checkout “commit id”,..

it-bejita.tistory.com

 

피어세션 정리

Keep (잘한점)

  • 알고리즘 문제 틈틈이 해결
  • 팀 완성

Problem(실수)

  • 강의 진도 완급 조절 어려웠음
  • 시각화 강의를 소홀히 한 것

Try (계획)

  • 해야할 것을 미리 끝내고 다른 공부를 시작하자
  • 수요일까지 기본과제, 심화과제 다 끝내기
  • 목요일 부터 transformer 공부 시작하기

주말 계획

  • 시각화 다듣기
  • RecSys 다듣기

학습 회고

4주차에는 다른 주차들 보다 시간이 빨리 지나갔다.

지난주차와 같이 주의 시작을 공휴일로 진행이 되었고

수요일날에는 '스몰톡' 이벤트 등을 진행하면서 프로젝트 팀 구성에 시간을 쓰다보니 

시각화 강의에 대해서 소홀했던 것이 한주의 아쉬움으로 남는다.

그래도 본인에게는 2일의 시간이 더 존재하기 떄문에 다행이라고 생각한다.

금일 밤과 토,일의 시간이 감사하게 느껴지는 한주이다.

연습

  1. 프로젝트 폴더를 만든다.
  2. git init 으로 저장소 생성
  3. 파일을 만들고 2개의 commit을 만든다. (git add “file name”, git commit -m “commit message”)
  4. 시간여행을 해보세요.(git checkout “commit id”, git checkout master)
  5. branch 생성 (git branch exp, git checkout exp) ⇒ (git checkout -b exp)

→ 헤드가 master와 exp를 둘다 가르키고 있다. 즉, 헤드가 exp를 가르키도록 해주어야 한다.

  1. 다음의 과정을 각각의 브랜치에서 진행한다.

→ exp 브랜치: exp.txt 파일 생성, master branch: master.txt 커밋

(git add exp.txt, git commit -m “exp1”) , (git add master.txt, git commit -m “master 1”)

  1. 병합한다.
  2. (head → master) git merge exp → vi editor뜨면 ((esc) → :wq)

 

버전 관리의 필요성

  • 프로젝트를 진행하다 보면 버그가 발생한다.
    • 버그의 종류
        1. 행복한 버그 = 문법 에러 Why? 해결하지 않으면 프로그램이 돌아가지 않아서
        1. 개 같은 버그 = 기획자의 의도와 다르게 진행 됨. 등등
      • → 버그가 발생하지 않은 버전을 찾기 위해서 버전 관리가 중요하다.

.git 파일

  • 숨겨져있음.
  • 레파지토리, 저장소
  • git init 으로 생성
  • git config —global user.name “이름쓰기”

 

터미널을 git bash를 사용

 

working dir

우리가 사용하고 있는 프로젝트 파일 모든 것

stage area

우리가 commit하기 전에 대기하고 있는 대기소, 장바구니.

git은 working directory를 고려하지 않는다. commit을 하기 전에 stage에 올라간 것만 확인하고 commit한다.

master는 마지막 작업을 가르킨다.

head는 현재 작업을 가르킨다.

(head→master 가 아닐 경우)새 버전의 부모는 Head다.

detached head state라고 한다.

(head→master 일 경우) master 와 head는 새로운 버전을 가르킨다.

마지막 커밋으로 직접 head를 움직여줬다면 마스터는 헤드를 따라오지 않기 때문에 오류가 생길 수 있기 때문이다. 따라서 마지막 거로 갈거면 git checkout master를 써서 마스터로 head를 마스터를 가르키도록 만들어 줘라

 

깃은 어떠한 버전도 지우지 않고 수정하지 않는다. = 불변성 = 안정성

이전 작업으로 가고 싶다면

git chechkout “이전 작업의 주소”

 

실험이 끝났다면 master가 exp branch를 병합한다.

마스터에서 exp를 병합하기 위해서는 우선 head → master인 상태가 되어야 한다.

 

그 후 Merge 합니다.

Merge한 버전의 parent는 master1, exp1 이다. 즉, master와 병합한 branch이다.

master에 merge한 결과를 과거로 돌리고 싶다면 reset을 하면 된다.

exp가 master를 병합한다. => master를 업데이트 한다. 실험이 끝났다면, master가 exp(branch)를 병합한다. -> 'merge' into current branch 새로운 version의 부모는 master, exp(branch)이며 master는 새로 만들어진 version을 가리킨다. 병합을 취소하려면 'reset' current branch

git 명령어

git config user.name = user name 확인

git config user.email = email 확인

git init

git status = 제일 많이 사용하게 될 명령어

git add “파일 이름” = 명령어를 사용해서 스테이지에 올릴 수 있다.

git commit -m “커밋 이름” = 커밋한다.

git log = git commit log를 확인할 수 있다.

git log --oneline = 한줄로만 나오게 하는 log

git log --oneline --all = 전체 commit을 출력

git checkout ‘커밋 주소’ = 커밋 주소의 상태로 working directory를 이동시킨다.

git checkout master

git reflog = 모든 행동에 대한 정보가 담긴 로그 why? 깃을 어떠한 버전도 지우지 않고 수정하지 않는다.

git branch “branch_name” = 브랜치 생성

git merge “target branch”

git reset

강의 복습 내용

CNN, RNN, Transformer 에 대해서 학습했다.

심화과제를 통해서 ViT (Vision Transformer), AAE (Adversarial Auto-Encoder) 를 학습했다.

 

과제 수행 과정 / 결과물 정리

https://it-bejita.tistory.com/7?category=1044787 

 

[부스트캠프] 3주차 day11 DL basic

Deep Learning Data Model Loss Function Optimizer (Algorithm) Loss Function Regression Task  MSE(Mean Squared Error) 평균제곱오차 선형문제에서는 타겟이 하나이기 때문에 평균제곱오차를 활용한 y 값과 p..

it-bejita.tistory.com

피어세션 정리

Keep (잘한점)

  • 강의 일정 맞춰서 피어세션때 질문하고 해결
  • 논문 리뷰해본 것
  • 알고리즘 포기하지 않고 몇 문제 풀어본 것

Problem(실수)

  • 시각화 강의 진도 늦음
  • 심화과제 다 못함..

Try (계획)

  • 질문 할당제 적용해보기
  • 월요일(공휴일) 할당량 정해보기

논문 계획

  • 월요일 자정까지 논문 읽고 질문 2개
  • 화요일에 질문 해결하는 시간 (30분 내)

학습 회고

3주차에는 개인적인 사정으로 수요일에 참여를 하지 못한 점이 아쉬움으로 남는다.

그래서 부족한 시간만큼 진도를 따라가려고 하다보니 블로그에 정리할 시간이 부족했던 것 같다.

이러한 점을 개선하기 위해서 공휴일에도 약간이나마 논문 리딩과 알고리즘 풀이를 진행할 예정이다.

금요일날에는 이러저러한 이벤트들이 발생하면서 시간이 부족한 것 같다.

따라서 목요일까지 학습계획을 모두 완료하는 것을 목표로 하고 금요일날에는 학습을 정리하는 수순으로 진행하는 것을 목표로 진행해보자.

Deep Learning 

  • Data
  • Model
  • Loss Function
  • Optimizer (Algorithm)

Loss Function

  • Regression Task 
    • MSE(Mean Squared Error) 평균제곱오차
      • 선형문제에서는 타겟이 하나이기 때문에 평균제곱오차를 활용한 y 값과 predict y 값의 차로 loss를 계산

  • Classification Task 
    •  CE(Cross Enthrophy)
      • Classificaiton task에서는 라벨이 붙은 타겟이 3개 이상일 경우에 CE를 사용한다.
      • 라벨이 2개일 경우에는 Binary Cross Enthrothy를 loss 로 사용 가능
  • Probabilistic Task
    • MLE(Maximum Likelihood Estimation), 최대 우도법

 

Optimization

용어정리

  • Generalization(일반화)
    • 학습된 모델이 다른 새로운 데이터에서도 잘 작동한도록 하는 것이 일반화이다.
    • 학습이 많이 할 수록 training error는 줄어드는 반면 test error는 줄어들다가 다시 특정 시점 이후로는 늘어난다.
      • Why? 학습하고 있는 데이터에 대해서 Over-fitting이 발생
    • traing error 와 test error의 차이를 generalization gap이라고 한다.

 

출처 https://data-science-hi.tistory.com/96

  • Under-fitting vs Over-fitting
    • Over-fitting = 모델이 학습 데이터에 대해서 학습을 통해 training error는 최대한으로 줄였으나 test error가 늘어난 상태 
    • Under-fitting = 모델에 대해서 학습이 부족거나 데이터가 부족해서 학습이 잘 안된 상태
  • Cross-validation
  • Bias-variance trade-off

https://nvsyashwanth.github.io/machinelearningmaster/bias-variance/

  • Bootstrapping
  • Bagging and boosting

http://incredible.ai/machine-learning/2015/10/25/Bias-Variance-Tradeoff-Ensemble/

 

 

 


 

피어세션 중 학습내용에 대한 질문들

 

  1. 배치 정규화가 무엇이고 해야하는 이유는?
    • 학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가지더라도 각 배치별로 평균과 분산을 이용해 정규화하는 것이다.
      • 평균 0, 표준 편차 1로 데이터의 분포 조정
    • batch normalizatio을 왜 해야 하는가?
      • 일단 배치 단위로 나눠서 학습이 필요한 이유 :
        • 학습 데이터를 전부 넣어서 gradient를 구한다면 대용량의 데이터를 한번에 처리하지 못한다. 그래서 배치 단위로 나눠서 학습을 진행하는 것이 일반적이다.
      • 이제 여기서 배치 단위로 학습을 하게 되면 internal covariant shift 문제가 발생한다.
        • internal covariant shift : 학습 과정에서 계층 별로 입력의 데이터 분포가 달라지는 현상이다. → 즉 배치 간의 데이터가 상이하다.
      • 또한 small learning rate에서 좀 더 자유로워지고, reguularization effect까지 있어 오버피팅 문제를 완화시킬 수 있다.
    • 결론 : 대용량의 데이터를 학습하기 위해서 배치 단위로 나눠서 학습하는 것이 일반적인데, 그냥 배치 단위로 학습을 진행하게 되면 배치 간의 데이터가 상이해지는 문제점이 발생하여 배치별로 정규화 작업을 진행하는 batch normalization기법을 활용해 이를 해결한다.
  2. Regression Task와 Classification Task의 loss function이 다른 이유는 무엇인가요? 

Regression Task는 target이 y인 1차원의 값이기 때문에 MSE(Mean Squared Error, 평균제곱오차) 를 사용한다.n=2 일 경우에는 Binary Cross Entropy Loss 를 사용할 수 있다. 하지만 label이 3개 이상인 경우에는 CE를 사용한다.

Classification Task에서는 CE(Cross Entropy) 를 사용하는데 이 이유는 target or label이 n(n≥1)개이기 때문이다. 즉, n 차원의 벡터를 대상으로 loss function을 계산하기 때문에 주로 사용된다.

 

 

강의 복습 내용

pytorch 의 기본 문법/ 함수 사용

과제를 통해서 custom modeling, custom Dataset & dataloadeer, Transfer learning & Hper parameter tuning을 학습했다.

지난 주차에 re 라이브러리를 통한 점화식이 데이터 추출에 유용했다.

pytorch troubleshooting 과목을 정리를 잘 해두어서 향후에 있을 프로젝트에서 에럳르을 잘 해결할 수 있도록 준비해야겠다.

과제 수행 과정 / 결과물 정리

https://it-bejita.tistory.com/4

 

[부스트캠프] pytorch 정리 1

pytorch 정리 1 대표적으로 사용되는 라이브러리는 Pytorch와 Tensorflow다. Tensorflow 구글에서 제공하는 라이브러리이다. Define and run 그래프를 먼저 그리고 난 후에 gradient 계산을 해준다. 이러한 특성.

it-bejita.tistory.com

https://it-bejita.tistory.com/5

 

[부스트캠프] pytorch.nn

pytorch.nn.Module input, output, Forward, Backward 정의 parameter(tensor) 정의 대략적인 구조 Module  layer function parameter pytorch.nn.Parameter Tensor 객체의 상속 개체 nn.Module 내에 attribute가..

it-bejita.tistory.com

피어세션 정리

Keep 

  • 지각 없이 소통하며 친해진 점

Problem

  •  피어세션 시간 분배 잘하기

Try

  • 모각공 아무 때나 질문하기
  • 알고리즘 모더레이터가 주체
  • 금요일에 심화과제 풀이
  • 심화과제 발표 랜덤 뽑기
  • 월요일에 논문정리

학습 회고

2주차에 처음으로 만난 부덕이와의 잊지 못할 첫 만남이었다.

강의 들으며 알고 있다고 착각에 나에게 제대로 된 학습을 하라는 의미로 체크하는 좋은 기회였다.

2주차 수업을 들으며 피어세션을 하며 알고리즘 5문제, recSys 논문(Deep Neural Networks for YouTube Recommendations(2016)) 리뷰 1개를 마치며 힘들었지만 보람있는 한 주였다.

수업 진도를 따라가며 추가학습을 하는 동안 학습 정리에 소홀했던 점을 반성하며

주말 간 논문에대한 내용을 정리해서 블로그에 남겨두어야겠다.

다음 주차에는 조금 더 부지런하고 성실하게 학습을 정리하는 한 주가 되도록 노력하자.

+ Recent posts