1. 메모리란?

메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다. CPU는 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐 입니다.


2. 메모리 계층

메모리를 필요에 따라 여러 가지 종류로 나누어 놓은 것을 메모리 계층 구조라고 합니다.

상단에 있을 수록 속도가 빠르지만 용량이 적으며 하단에 있을 수록 속도가 느리지만 용량이 큽니다.

  • 레지스터: CPU 안에 있는 메모리로 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장합니다.
  • 캐시(L1, L2, L3 캐시): 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소입니다.
  • 주기억장치: 메모리(RAM)를 의미합니다. 휘발성이며 CPU가 처리하고 있는 내용을 저장하고 있는 기억장치입니다.
  • 보조기억장치: Hard Disk Driver(HDD)와 Solid State Driver(SSD)를 의미합니다. 주기억장치의 용량 부족을 보완하기 위해 쓰는 외부 기억 장치입니다. 주기억장치와는 다르게 휘발성을 띠지 않아 컴퓨터의 전원이 꺼지더라고 유지됩니다.
728x90

1. 경사하강법이란?

경사하강법(Gradient Descent)은 머신러닝 알고리즘에서 가장 널리 사용되는 최적화 기법 중 하나다.

함수의 입력 변수 값을 점진적으로 조정하여 함수의 출력값을 최소화 또는 최대화하는 방식이다.

 

2. 경사하강법을 사용하는 이유?

목적 함수의 최적해를 탐색하기 위해 사용된다.

미분하면 되지 않나?라고 생각할 수 있는데 머신러닝의 목적 함수는 대부분 복잡하고 비선형 함수다. 따라서 미분으로 최솟값 혹은 최대값을 구하기 어렵다.

 

 3. 경사하강법을 이용해 최적화하는 방법

과정은 다음과 같다.

1. 목적 함수(cost function) 설정: 최소화하려는 오차 함수를 정의한다.

2. 변수 초기값 설정: 최적화할 변수들의 초기값을 임의로 정한다.

3. 경사(gradient) 계산: 현재 변수 값에서 목적 함수의 기울기(변화율)을 계산한다.

4. 변수 업데이트: 계산된 기울기 방향과 반대 방향으로 일정 비율(학습률)만큼 변수 값을 조정한다.

5. 반복: 목적 함수 값이 최소가 될 때까지 반복한다.

 

4. 경사하강법의 문제점

1. 적절한 학습률(learning rate)

보통 학습률과 기울기를 혼합하여 나아갈 정도와 방향을 결정한다.

학습률은 모델이 학습을 진행할 때 각각의 가중치(weight)를 얼마나 업데이트할지 결정하는 하이퍼파라미터이다.

학습률은 딥러닝 모델의 학습 속도와 안정성을 결정하는 중요한 요소이다.

만약, 학습률이 높으면 변화가 커진다.

학습률이 낮으면 발산하지 않는 대신 최적값에 수렴하는 시간이 오래 걸릴 수있다.

2. Local Minimum(지역 최솟값)

우리가 찾고자 하는 것은 전역 최솟값(Global minimum)이다.

하지만 운이 안 좋으면 지역 최솟값을 전역 최솟값으로 인식해 지역 최솟값에서 탈출하지 못하고 해당 값에 수렴할 수도 있다.

5. 경사하강법 종류

경사하강법의 종류에는 배치 경사하강법, 확률적 경사하강법, 미니배치 경사하강법이 있다.

5-1. 배치 경사 하강법( Batch Gradient Descent)

전체 데이터 셋에 대해 경사를 계산하고 가중치를 업데이트한다.

장점: 수렴할 때까지 가장 정확한 최적해를 찾을 수 있다.

단점: 계산 비용이 크고 속도가 느리다.

5-2. 확률적 경사 하강법( Stochastic Gradient Descent)

데이터를 한 번에 하나씩 불러와 경사를 계산하고 가중치를 업데이트한다.

장점: 계산 비용이 작고 수렴 속도가 빠르다.

단점: 실제 최적해 주변에서 진동이 심할 수 있다.

5-3. 미니배치 경사 하강법( Mini-Batch Gradient Descent)

데이터를 작은 그룹(미니배치)으로 나누어 경사를 계산하고 가중치를 업데이트한다.

배치와 확률적 방식의 중간 지점으로 두 방식의 장단점을 적절히 보완한다.

실무에서 가장 많이 사용되는 기법이다.

728x90

TTS는 음성 합성(Speech synthesis)이라고도 불린다.

 

TTS 데이터의 특징

  •  one-to-many 문제이다.( ∵ 동일한 텍스트가 다양한 방식으로 합성될 수 있다.)
    • 같은 문장을 말하는 방식은 사람마다 다르다.
  • 장기 의존성 문제가 있다.
    • 문장의 의미를 이해하려면 주변 단어의 문맥을 고려해야 한다.
    • 일관성 있고 자연스러운 음성을 생성하려면 TTS 모델은 긴 시퀀스에서 문맥의 정보를 이해하는 것을 유지해야 한다.
  • TTS 모델을 훈련하려면 일반적으로 한 쌍의 텍스트와 해당 음성이 필요하다.
    • 데이터에 소음과 같은 노이즈가 있으면 좋지 않다.

 

좋은 TTS 데이터의 특징

  • 다양한 패턴, 억양, 언어와 감정을 포괄하는 고품질 및 다양한 오디오
    • 녹음은 선명하고 배경 소음이 없어야 하며 자연스러운 음성의 특징이 보여야 한다.
  • 음성에 대응하는 대본이 있어야 한다.
  • 다양한 유형의 문장, 구문, 단어를 포함하고 있는 콘텐츠가 포함 한다.
    • 모델이 다양한 언어적 맥락을 처리할 수 있도록 다양한 주제, 장르, 도메인을 포함해야 한다.

 

Hugging Face의 TTS  데이터셋

1. LJSpeech

  • 13100개의 영어 오디오 - text
  • 한 명의 화자가 7개의 non-fiction책을 영어로 읽음
  • 품질이 좋고 다양한 문장들로 이루어져 있기 때문에 TTS model을 평가하는 벤치마크로 많이 쓰임

2. Multilingual LibriSpeech

  • 대규모 영어 오디오북 컬렉션인 LibriSpeech data의 다국어 버전이다.
  • 독일어, 스페인어, 프랑스어, 이탈리아어, 포르투갈어, 폴란드어, 네덜란드어를 제공한다.
  • 텍스트-오디오를 제공한다.
  • 다국어 TTS 시스템을 개발하고 언어 간 음성 합성 기술을 탐색하는데 유용한 리소스를 제공한다.

3. VCTK(Voice Cloning Toolkit)

  • TTS를 위해 설계된 데이터셋
  • 다양한 억양을 가진 110명의 영어 화자의 오디오
  • 각 화자는 뉴스, rainbow passage(영어 읽기 테스트 문장), 연설 악센트 아카이브에서 약 400개의 문장씩 일긍ㅁ
  • VCTK 데이터셋을 이용해 다양한 목소리와 억양을 훈련시켜 다양한 음성 합성이 가능하도록 만듦

4. Libri-TTS/LibriTTS-R

  • TTS 연구를 위해 설계됨
  • 약 585시간의 다중 화자 영어 음성
  • Libri Speech에서 파생됨

 

참고자료

 

Text-to-speech datasets - Hugging Face Audio Course

Unit 0. Welcome to the course! Unit 1. Working with audio data Unit 2. A gentle introduction to audio applications Unit 3. Transformer architectures for audio Unit 4. Build a music genre classifier Unit 5. Automatic Speech Recognition Unit 6. From text to

huggingface.co

 

728x90

 

1. zsh 설치

apt-get install zsh

 

zsh 버전 확인

zsh --version

 

2. oh-my-zsh 설치

curl이나 wget을 이용해서 설치할 수 있다.

# curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

 

"curl: command not found" 오류가 떴다면 curl이 설치가 안된 상태이므로 아래 코드를 실행해준다.

apt-get install curl

 

다음과 같은 질문이 나오면 Y을 입력한다.

다음과 같은 화면이 뜨면 성공적으로 설치한 것이다

터미널을 끈다.

 

3. Default Shell 설정

지금까지 한 것만으로 default shell이 zsh가 안되서 추가 조치를 취했다.

 

  • Ctrl + Shift + p

Terminal: Select Defalut Profile에 입력해서 클릭 후, zsh을 클릭해준다.

(zsh (2)은 왜 있는지 모르겠다...)


References

https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH

 

Installing ZSH

🙃 A delightful community-driven (with 2,200+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, pyth...

github.com

https://log4cat.tistory.com/7

 

Ubuntu에 Oh My Zsh 설치

# zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~

log4cat.tistory.com

https://stackoverflow.com/questions/64001669/zsh-and-vscode-default-shells

 

ZSH And VSCode - Default Shells

I've started setting up ZSH for VSCode. It worked for a small bit, but then it changed to Git Bash (my previous default shell). I tried changing the shell back to ZSH, but it didn't display in the ...

stackoverflow.com

 

728x90

'프로젝트 setup' 카테고리의 다른 글

Tips  (0) 2024.06.15
[Hugging Face 🤗] Load Datasets  (0) 2024.06.15
requirement.txt 설치  (2) 2024.01.03

스택(Stack)의 개념

후입선출(LIFO: Last-In First-Out) 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조로 되어 있다.

 

'블럭쌓기'를 생각하면 이해하기 쉽다.

블록을 하나씩 쌓으려면 가장 최근에 쌓았던 블록 위에 하나를 더 쌓게 된다.(Push)

뺄 때는 가장 최근 블록부터 제거하게 된다.(Pop)

 

스택(Stack) 구조

 

 

파이썬 스택(Stack) 구현

stack = [1, 2, 3] # 리스트 만들기

### stack push
stack.append(4)
stack
# [1, 2, 3, 4]

### stack pop
top = stack.pop() # 4
stack
# [1, 2, 3]

 

References

https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D

 

728x90

1. 터미널 열기

vscode: Ctrl + `

2. 코드 입력

pip install -r requirements.txt

 

728x90

'프로젝트 setup' 카테고리의 다른 글

Tips  (0) 2024.06.15
[Hugging Face 🤗] Load Datasets  (0) 2024.06.15
zsh 및 oh-my-zsh 설치(vscode)  (1) 2024.01.24

+ Recent posts