Breeze: ์ฒจํƒ‘ ํ†ตํ•ฉ

์— ๋งŒ๋“  2012๋…„ 11์›” 30์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: scalanlp/breeze

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ์„  ํ›Œ๋ฅญํ•œ ๋„์„œ๊ด€์ž…๋‹ˆ๋‹ค. ์ €๋Š” Spire(w/ Erik Osheim @non)์˜ ์ €์ž ์ค‘ ํ•œ ๋ช…์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ผ๋ถ€ ์ž‘์—…(wrt ๋Œ€์ˆ˜ ์œ ํ˜• ํด๋ž˜์Šค)์„ ๋ณต์ œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Breeze๋Š” Spire๋ณด๋‹ค ํ›จ์”ฌ ๋” ํฐ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด Spire์˜ ์œ ํ˜• ํด๋ž˜์Šค(์ฒดํฌ์•„์›ƒ spire.algebra)๋กœ breeze.math๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Spire์—์„œ ๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. VectorSpace ์œ ํ˜• ํด๋ž˜์Šค๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹  ๋ชจ๋‘๊ฐ€ ์ˆœ์‘ํ•œ๋‹ค๋ฉด, ์ ์ ˆํ•œ ๊ฒฝ์šฐ Spire์˜ ์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ฆฌ์ฆˆ ๋ฒ„์ „์— ๋Œ€ํ•œ PR์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์—†์œผ์‹œ๋‹ค๋ฉด ๊ฑฑ์ •๋ง๊ณ  ์ €์—๊ฒŒ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. :)

https://github.com/non/spire

enhancement help wanted project

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ๊ฒฐ๋ก /์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์„ธ์ƒ์€ ์ด ๋‘ ๊ฐœ์˜ ํ›Œ๋ฅญํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฒฐํ•ฉ๋˜๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

๋ชจ๋“  16 ๋Œ“๊ธ€

๊ฐ์‚ฌ ํ•ด์š”!

ํ™•์‹คํžˆ ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ Semiring[1]๊ณผ ClosedSemiring[2]์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ๋ณธ์ ์œผ๋กœ InnerProductSpace, CoordinateSpace ๋ฐ TensorSpace์™€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ณ€ํ˜•์„ ํฌํ•จํ•˜์—ฌ VectorSpace ๊ณ„์ธต์˜ ๋ชจ๋“  ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

CoordinateSpace์™€ TensorSpace๋Š” ๋‚ด๊ฐ€ ์•„๋Š” ์ˆ˜ํ•™์˜ ์–ด๋–ค ๊ฒƒ๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ํ•œ ๊ธฐ๋ฐ˜(๋˜๋Š” ์…€ ์ˆ˜ ์žˆ๋Š” ๋ฌดํ•œ ๊ธฐ๋ฐ˜... ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜ ๊ณต๊ฐ„์ด ์•„๋‹˜)์ด ์žˆ๋Š” VectorSpaces๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๊ณ , ํ›„์ž(์‹ค์ œ๋กœ Tensor Space๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ„)๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ค„์ด๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜์˜ ๊ธฐ๋Šฅ. ์‹ค์ œ๋กœ MutableCoordinateSpace๋Š” ๋‹ค์Œ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์œ ์šฉํ•œ ๋˜ ๋‹ค๋ฅธ ์ž‘์—…์€ scaleAdd/axpy ์ž‘์—…์ž…๋‹ˆ๋‹ค. axpy(a: S, x: T, y: T) = a * x + y, MutableVectorSpace์— ๋Œ€ํ•œ ์ธํ”Œ๋ ˆ์ด์Šค ๋ฒ„์ „ ํฌํ•จ. ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ...

๋‚˜๋Š” ๋˜ํ•œ DenseVector์™€ DenseMatrix ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค... ์ƒ๊ฐํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

[1] https://github.com/dlwh/breeze/blob/master/math/src/main/scala/breeze/math/Semiring.scala
[2] ์„ธ๋ฏธ๋ง + ํ์‡„ ์—ฐ์‚ฐ์ž p* = \sum_0^\infty p^n. ํ™•๋ฅ  ์„ธ๋ฏธ๋ง์€ 1/(1-p)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ K์— ๋Œ€ํ•ด \sum_0^\infty p^n = \sum_0^K p^n์ธ KClosedSemirings๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๊ฐ€์›Œ์š” :) ์šฐ๋ฆฌ๋Š” ๋‹จ์ง€ Semiring์ด๊ณ  ๋‹ซํžŒ ๋ณ€ํ˜•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” Rig๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ˆ˜์—…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋Š” Rig(๋ฐ Ring ๋“ฑ)๊ฐ€ ํ‰๋“ฑ์„ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ "๋‹ซ๊ธฐ"์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋„ ๋ˆ„๋ฝ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ VectorSpace์—์„œ close ์ •์˜๋œ ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. Spire์— MetricSpace ์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ฆฌ๊นŒ์ง€(NomedVectorSpaces๋Š” ์•”์‹œ์ ์œผ๋กœ MetricSpace๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค). ์ด๊ฒƒ์€ NormedVectorSpace์—์„œ ๋‹ซ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•”์‹œ์  ToDouble๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ Rigs์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ฐ€๋ณด๋ฉด์„œ ๋” ๋งŽ์€ ์งˆ๋ฌธ์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž˜ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” Rig๋ฅผ ๋“ค์–ด๋ณธ ์ ์ด ์—†๋‹ค. ๋‹ˆ๋ชจ๋‹‰์ด ๋ญ์•ผ? ๋‚˜๋Š” Rng๊ฐ€ ๋ฐ˜์ง€๋ผ๋Š” ๊ฒƒ์„ ์•ˆ๋‹ค.
์‹ ๋ถ„์€ ์—†์ง€๋งŒ...

2012๋…„ 12์›” 1์ผ ํ† ์š”์ผ ์˜คํ›„ 9์‹œ 48๋ถ„์— Tom Switzer [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๊ฐ€์›Œ์š” :) ์šฐ๋ฆฌ๋Š” ๋‹จ์ง€ Semiring์ด๊ณ  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” Rig๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ์‡„ํ˜•. ๋‹ค๋ฅธ ์ˆ˜์—…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋Š” Rig(๋ฐ Ring ๋“ฑ)๊ฐ€ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ‰๋“ฑํ•˜๋ฏ€๋กœ "๋‹ซ๊ธฐ"์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋„ ๋ˆ„๋ฝ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋„ ๊ฐ€๊นŒ์ด์—์„œ ๋ณด์•˜๋‹ค
VectorSpace์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. MetricSpace ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•  ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
ํด๋ž˜์Šค๋ฅผ Spire๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์•ฝ ๋‘ ๋ฐฐ์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—๊ฒŒ
๊ฑฐ๋ฆฌ(NomedVectorSpaces๋Š” ์•”์‹œ์ ์œผ๋กœ MetricSpace๋ฅผ ๊ฐ€์ ธ์˜ด). ์ด๊ฒƒ
NormedVectorSpace ๋ฐ Rigs์— ๋Œ€ํ•ด ๋‹ซ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•”์‹œ์  ToDouble๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.

์–ด์จŒ๋“  ๊ฐ€๋ณด๋ฉด์„œ ๋” ๋งŽ์€ ์งˆ๋ฌธ์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/scalanlp/breeze/issues/21#issuecomment -10926487์—์„œ ํ™•์ธํ•˜์„ธ์š”.

'๋„ค๊ฑฐํ‹ฐ๋ธŒ' ์—†์ด ๋งํ•˜์„ธ์š” :)

์ด ํŒจํ‚ค์ง€๊ฐ€ ํ•จ๊ป˜ ๋ชจ์ด๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ๋„์ฐฉํ•  ์ˆ˜๋Š” ์—†์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค!

๋˜ํ•œ AlgeBird์™€์˜ ์–ด๋Š ์ •๋„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋ฐ ํ•ฉ๋ณ‘์€ Spier์™€ ํ•จ๊ป˜ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์กฐ๊ฐํ™”๊ฐ€ ๋ฐฉ์ง€๋˜๊ณ  AlgeBird์™€ Breeze๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ„์— ๋” ํฐ interop ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋ช‡ ๊ฐ€์ง€๊ฐ€ ๋‚˜๋ฅผ ์งœ์ฆ๋‚˜๊ฒŒ ํ•˜์—ฌ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” Breeze๊ฐ€ ํ˜„์žฌ ํŠนํžˆ Double๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์œ ํ˜•์— ๋Œ€ํ•ด Semiring/Rig ๋˜๋Š” Ring๊ณผ ๊ฐ™์€ ์œ ํ˜• ํด๋ž˜์Šค ์•”์‹œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ (Semiring๊ณผ ๊ฐ™์€) ํŠน์„ฑ์˜ ๋™๋ฐ˜์ž์— ์•”์‹œ์  ์ธ์Šคํ„ด์Šค๋ฅผ ๋„ฃ์–ด ์ด๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. Spire๋Š” ์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ์ปดํŒจ๋‹ˆ์–ธ์— ๋„ฃ์ง€ ์•Š๊ณ  ๋Œ€์‹  ํŒจํ‚ค์ง€ ๊ฐœ์ฒด์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ฆ‰, DenseMatrix.eye์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ spire.implicits๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜์ง€๋งŒ ํ˜„์žฌ Breeze์—์„œ๋Š” DenseMatrix ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

(ํŽธ์ง‘: ๋‚ด๊ฐ€ ์ด๊ฒƒ์— ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ์ด์œ ๋Š” spire.implicits._ ๊ฐ€์ ธ์˜ค๊ธฐ ์‹คํŒจ๋กœ ์ธํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๋‹นํžˆ ์œ ์ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ์ถ”์ƒ ๋Œ€์ˆ˜ํ•™์— ์ •ํ†ตํ•˜์ง€ ์•Š์€ Breeze ์‚ฌ์šฉ์ž๊ฐ€ Breeze ๋•Œ๋ฌธ์— ํ™”๋ฅผ ๋‚ผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. Double์šฉ Rig ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)

@non , ์ปดํŒจ๋‹ˆ์–ธ ๊ฐ์ฒด์—

์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ๊ณ ์œ ํ•œ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ฒด๋กœ ์ด๋™ํ•œ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๊ทธ๊ฒƒ์ด PITA์˜€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Ring ์ปดํŒจ๋‹ˆ์–ธ ๊ฐœ์ฒด์— Ring[Int]์ด ์žˆ๋Š” ๊ฒฝ์šฐ Semiring[Int]๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ํ•œ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜๋Š” Semiring์˜ ์ปดํŒจ๋‹ˆ์–ธ ๊ฐ์ฒด์— ์•”์‹œ์ ์œผ๋กœ Ring -> Semiring์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ›„์ž์˜ ๋ฐฉ๋ฒ•์€ ๋งŽ์€ ๋ชจํ˜ธ์„ฑ์„ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ€์ ธ์˜ค๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ชจ๋“  ์•”์‹œ๊ฐ€ ์ด์ œ ์ •๋ง ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋จธ๋ฆฌ๋กœ ๋Œ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋‹จ์ง€ ~ 10์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ ๋‹ค.
typeclass๋‹น ๋‚ด์žฅ ํ•จ์ˆ˜์— ๋Œ€ํ•œ loc: ์•”์‹œ์  val semiring_double:
์„ธ๋ฏธ๋ง[๋”๋ธ”] = ๋ง[๋”๋ธ”].

๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋งํ•  ์ˆ˜ ์—†๋Š” ์–‘์˜ ํ˜ผ๋ž€(๋ฐ LOC)์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ
๋‹ค๋ฅธ ์ŠคํŠธ๋กœํฌ, ๋‚˜๋Š” ์ถ”์ธกํ•œ๋‹ค.

2014๋…„ 2์›” 3์ผ ์›”์š”์ผ ์˜ค์ „ 5์‹œ 47๋ถ„์— Tom Switzer [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ํ˜• ํด๋ž˜์Šค๋ฅผ ๊ณ ์œ ํ•œ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ ์ด๋™ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ 
PITA์˜€๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ง์— Ring[Int]์ด ์žˆ๋Š” ๊ฒฝ์šฐ
์ปดํŒจ๋‹ˆ์–ธ ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ Semiring[Int]์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ
๊ฑฐ๊ธฐ์— ๋ณต์ œํ•˜์‹ญ์‹œ์˜ค. ๋˜๋Š” Semiring์—์„œ ์•”์‹œ์ ์œผ๋กœ Ring -> Semiring์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋™๋ฐ˜์ž ๊ฐœ์ฒด. ๊ทธ๋Ÿฌ๋‚˜ ํ›„์ž์˜ ๋ฐฉ๋ฒ•์€ ๊ฒฐ๊ตญ ๋งŽ์€
๋ชจํ˜ธ์„ฑ. ํ˜„์žฌ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐฉ์‹์€ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ชจ๋“ 
์ด์ œ ์•”์‹œ์ ์œผ๋กœ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/scalanlp/breeze/issues/21#issuecomment -33955190์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

์ด์— ๋Œ€ํ•œ ๊ฒฐ๋ก /์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์„ธ์ƒ์€ ์ด ๋‘ ๊ฐœ์˜ ํ›Œ๋ฅญํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฒฐํ•ฉ๋˜๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

ํ•ฉ์ฒด๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ๊ทธ๊ฒƒ์„ ์˜นํ˜ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋Šฅ๋ ฅ์ด ์—†์–ด์š”.

2016๋…„ 11์›” 14์ผ ์›”์š”์ผ ์˜ค์ „ 4์‹œ 44๋ถ„์— Make42 [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ํ•ฉ์ฒด๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scalanlp/breeze/issues/21#issuecomment -260325770 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAAloUmzOeaAxnF7s4prlOVJevwTSHoIks5q-FetgaJpZM4ASWbN
.

(์•ˆ๋‚ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!)

2016๋…„ 11์›” 14์ผ ์›”์š”์ผ ์˜ค์ „ 11์‹œ 27๋ถ„, David Hall david.lw. [email protected]
์ผ๋‹ค:

๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ๊ทธ๊ฒƒ์„ ์˜นํ˜ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋Šฅ๋ ฅ์ด ์—†์–ด์š”.

2016๋…„ 11์›” 14์ผ ์›”์š”์ผ ์˜ค์ „ 4์‹œ 44๋ถ„์— Make42 [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ํ•ฉ์ฒด๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scalanlp/breeze/issues/21#issuecomment -260325770,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAloUmzOeaAxnF7s4prlOVJevwTSHoIks5q-FetgaJpZM4ASWbN
.

์•ˆ๋…•ํ•˜์„ธ์š” @dlwh , ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์Šค์Šค๋กœ ํ•  ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์™ธ๋ถ€ ๊ธฐ์—ฌ๋ฅผ ์œ„ํ•ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํฐ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ์•„์ง ๋ฐœํ‘œ๋Š” ์•ˆํ–ˆ์ง€๋งŒ ์ƒ๊ฐ์ค‘์ž…๋‹ˆ๋‹ค.
๊ฑฐ์˜ ๊ณง 1.0์„ ์ž๋ฅด๊ณ  ์ฃผ์š” ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‹ค์Œ์„ ํฌํ•จํ•  ์ฃผ์š” ์žฌ์„ค๊ณ„ 2.0์„ ํ†ตํ•ด
๋” ๋‚˜์€ Spire ํ†ตํ•ฉ. ์‹ค์ œ ๊ตฌํ˜„ํ•  ์‹œ๊ฐ„์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€
์ฃผ์š” ์žฌ์„ค๊ณ„๋Š” ๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

2017๋…„ 12์›” 11์ผ ์›”์š”์ผ ์˜ค์ „ 11:07, Sergei Lebedev [email protected]
์ผ๋‹ค:

์•ˆ๋…•ํ•˜์„ธ์š” @dlwh https://github.com/dlwh , ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜์‹ญ๋‹ˆ๊นŒ?
ํ–‰์œ„? ๊ทธ๋ ‡๋‹ค๋ฉด ์Šค์Šค๋กœ ํ•  ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด
์™ธ๋ถ€ ๊ธฐ์—ฌ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scalanlp/breeze/issues/21#issuecomment-350824931 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAAloQmH3cVn822imYfMSVjG4Z5arQf2ks5s_X1WgaJpZM4ASWbN
.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰